﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Linq;
using AjaxControlToolkit;
using System.IO;
using System.Configuration;
using System.Threading;
using DevExpress.Web.ASPxClasses;
using DevExpress.Web.ASPxGridView;
using DevExpress.Web.Data;
using System.Globalization;
using DevExpress.Web.ASPxEditors;

public partial class Admin_Default : System.Web.UI.Page
{

    #region TraerContextItems

    private void TraerContextItems()
    {
        if (Context.Items["StrProIdProponente"] != null)
            StrProIdProponente = Context.Items["StrProIdProponente"].ToString();
        if (Context.Items["StrProId"] != null)
            StrProId = Context.Items["StrProId"].ToString();
        if (Context.Items["_StrUsuCorreoElectronico"] != null)
            StrUsuCorreoElectronico = Context.Items["_StrUsuCorreoElectronico"].ToString();
        if (Context.Items["StrUsuNit"] != null)
            StrUsuNit = Context.Items["StrUsuNit"].ToString();
        if (Context.Items["StrUsuId"] != null)
            StrUsuId = Context.Items["StrUsuId"].ToString();
    }

    #endregion


    #region crearContextItems
    private void crearContextItems()
    {
        try
        {
            Context.Items["StrProIdProponente"] = StrProIdProponente;
            Context.Items["StrProId"] = StrProId;
            Session["StrProIdReporte"] = StrProId;
            Context.Items["_StrUsuCorreoElectronico"] = StrUsuCorreoElectronico;
            Context.Items["StrUsuNit"] = StrUsuNit;
            Context.Items["StrUsuId"] = StrUsuId;
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }
    }
    #endregion

    #region Propiedades

    public string StrProIdProponente
    {
        get
        {
            if (ViewState["StrProIdProponente"] != null)
                return ViewState["StrProIdProponente"].ToString();
            return "";
        }
        set { ViewState["StrProIdProponente"] = value; }
    }
    public string StrProId
    {
        get
        {
            if (ViewState["StrProId"] != null)
                return ViewState["StrProId"].ToString();
            return "";
        }
        set { ViewState["StrProId"] = value; }
    }
    public string StrUsuCorreoElectronico
    {
        get
        {
            if (ViewState["StrUsuCorreoElectronico"] != null)
                return ViewState["StrUsuCorreoElectronico"].ToString();
            return "";
        }
        set { ViewState["StrUsuCorreoElectronico"] = value; }
    }
    public string StrUsuNit
    {
        get
        {
            if (ViewState["StrUsuNit"] != null)
                return ViewState["StrUsuNit"].ToString();
            return "";
        }
        set { ViewState["StrUsuNit"] = value; }
    }
    public string StrUsuId
    {
        get
        {
            if (ViewState["StrUsuId"] != null)
                return ViewState["StrUsuId"].ToString();
            return "";
        }
        set { ViewState["StrUsuId"] = value; }
    }

    private DataTable ApoyosDataTableCache
    {
        get
        {
            DataTable objTable = null;
            if (Cache["ApoyosDataTableCache" + Session.SessionID] != null)
                objTable = (DataTable)Cache["ApoyosDataTableCache" + Session.SessionID];
            return objTable;
        }
        set
        {
            if (value != null)
            {
                Cache.Insert("ApoyosDataTableCache" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
            }
        }
    }
    private DataTable ActividadesDataTableCache
    {
        get
        {
            DataTable objTable = null;
            if (Cache["ActividadesDataTableCache" + Session.SessionID] != null)
                objTable = (DataTable)Cache["ActividadesDataTableCache" + Session.SessionID];
            return objTable;
        }
        set
        {
            if (value != null)
            {
                Cache.Insert("ActividadesDataTableCache" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
            }
        }
    }

    private DataTable SubActividadesDataTableCache
    {
        get
        {
            DataTable objTable = null;
            if (Cache["SubActividadesDataTableCache" + Session.SessionID] != null)
                objTable = (DataTable)Cache["SubActividadesDataTableCache" + Session.SessionID];
            return objTable;
        }
        set
        {
            if (value != null)
            {
                Cache.Insert("SubActividadesDataTableCache" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
            }
        }
    }

    private DataTable CronogramaDataTableCache
    {
        get
        {
            DataTable objTable = null;
            if (Cache["CronogramaDataTableCache" + Session.SessionID] != null)
                objTable = (DataTable)Cache["CronogramaDataTableCache" + Session.SessionID];
            return objTable;
        }
        set
        {
            if (value != null)
            {
                Cache.Insert("CronogramaDataTableCache" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
            }
        }
    }

    private DataTable BeneficiariosDataTableCache
    {
        get
        {
            DataTable objTable = null;
            if (Cache["BeneficiariosDataTableCache" + Session.SessionID] != null)
                objTable = (DataTable)Cache["BeneficiariosDataTableCache" + Session.SessionID];
            return objTable;
        }
        set
        {
            if (value != null)
            {
                Cache.Insert("BeneficiariosDataTableCache" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
            }
        }
    }

    #endregion

    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {


        if (!IsPostBack)
        {
            TraerContextItems();
            if (Session["USU_USUARIO"] == null)
            {
                Response.Redirect("../login.aspx");
                return;
            }
            else
            {
                txtPRO_NIT.Text = StrUsuNit;
                txtPRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL.Text = StrUsuCorreoElectronico;
            }
            ActividadesDataTableCache = null;
            SubActividadesDataTableCache = null;
            CronogramaDataTableCache = null;
            cargarDepartamentos();
            cargarEntidadesFinancieras();
            cargarTiposEntidades();
            cargarLineas();
            cargarAreas();
            ASPxWebControl.RegisterBaseScript(Page);

            if (StrProIdProponente != "")
            //Busca datos proyecto 2012
            {
                ///////////////////////////////////
                //   CARGAR DATOS DEL PROPONETE  //
                ///////////////////////////////////
                cargarDatosProponentes();

                if (StrProId != "")
                {

                    DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
                    var datosProyecto = (from a in contexto.APP_PROPONENTEs
                                         join b in contexto.APP_PROYECTOs on a.PRO_ID equals b.PRO_ID_PROPONENTE
                                         where object.Equals(a.PRO_ID, StrProIdProponente) && object.Equals(b.VIG_ID, ConfigurationManager.AppSettings["IDVigencia"].ToString())
                                         && object.Equals(b.PRO_ID, StrProId)
                                         select new
                                                 {
                                                     ProponenteID = a.PRO_ID, //a proponentes
                                                     a.PRO_NIT,
                                                     b.USU_ID,
                                                     ProyectoID = b.PRO_ID    //b . proyecto
                                                 });
                    if (datosProyecto != null)
                    {
                        //existen proponentes y proyectos
                        //verifica el si es propietario del registro
                        foreach (var v in datosProyecto)
                        {
                            ///////////////////////////////////
                            //   CARGAR DATOS DEL PROYECTO   //
                            ///////////////////////////////////
                            StrProId = v.ProyectoID.ToString();
                            //Session["PRO_ID"] = StrProId;
                            cargarDatosProyectos();
                            cargarDatosComponentes();
                            BindDatosApoyos();
                            cargarDatosBeneficiarios();
                            BindDatosCronograma();
                           
                            if (ddlTIP_NOMBRE.SelectedValue != "")
                            {
                                //cargarControlesLineas(ddlAppLineas.SelectedValue);
                                cargarDatosValoresDocumentos();
                            }
                            if (ddlAppLineas.SelectedValue != "")
                            {
                                //cargarControlesLineas(ddlAppLineas.SelectedValue);
                                cargarDatosValoresIndicadores();
                            }
                            //activar los tabs
                            cargarPresupuestoDetalle();
                            TabPanel2.Enabled = true;
                            TabPanel3.Enabled = true;
                            TabPanel4.Enabled = true;


                        }

                    }
                }



            }
        }
        else
        {

            if (CronogramaDataTableCache != null)
            {
                ASPxGridViewCronograma.DataSource = CronogramaDataTableCache;
                ASPxGridViewCronograma.DataBind();
            }
            if (ApoyosDataTableCache != null)
            {
                ASPxGridViewApoyo.DataSource = ApoyosDataTableCache;
                ASPxGridViewApoyo.DataBind();
            }

            //Label objLabelCOntrol = (Label)PlaceHolderIndicadores.FindControl("Label0");
            ////PINTA NUEVAMENTE LOS CONTROLES
            if (ddlAppLineas.SelectedValue != "")
            {
                cargarControlesLineas(ddlAppLineas.SelectedValue);
            }
            if (ddlTIP_NOMBRE.SelectedValue != "")
            {
                cargarControlesDocumentos();
            }

        }




    }
    #endregion

    #region cargarPresupuestoDetalle
    private void cargarPresupuestoDetalle()
    {
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();

        try
        {
        var datosPresupuestoDetalleTipos = (from a in contexto.APP_PRESUPUESTO_DETALLE_TIPOs

                                            select a);
        foreach (var v in datosPresupuestoDetalleTipos)
        {
            //DEPENDIENDO DEL TIPO BUSCO EL DATO RELACIONADO CON EL PROYECTO PROYECTO

            #region txtPDE_VALOR_TOTAL
            var datosPresupuestoDetalle = (from g in contexto.APP_PRESUPUESTO_DETALLEs
                                           where g.PRO_ID == Convert.ToDecimal(StrProId) && g.APT_ID == v.APT_ID
                                           select g);
            foreach (var j in datosPresupuestoDetalle)
            {

                DataClasses.APP_PRESUPUESTO_DETALLE objPresupuestoDetalle = new DataClasses.APP_PRESUPUESTO_DETALLE();
                ContentPlaceHolder contentPage = Master.FindControl("MainContent") as ContentPlaceHolder;
                TabContainer objTabContainer = contentPage.FindControl("TabContainer1") as TabContainer;

                
                TextBox objPDE_VALOR_TOTAL = new TextBox();
                Int64 decPDE_VALOR_TOTAL;
                TextBox objPDE_RECURSOS_MUNICIPIO = new TextBox();
                Int64 decPDE_RECURSOS_MUNICIPIO;
                TextBox objPDE_RECURSOS_DEPARTMENTO = new TextBox();
                Int64 decPDE_RECURSOS_DEPARTMENTO;
                TextBox objPDE_RECURSOS_MINISTERIO = new TextBox();
                Int64 decPDE_RECURSOS_MINISTERIO;
                TextBox objPDE_INGRESOS_PROPIOS = new TextBox();
                Int64 decPDE_INGRESOS_PROPIOS;
                TextBox objPDE_OTROS_RECURSOS = new TextBox();
                Int64 decPDE_OTROS_RECURSOS;
                
                

                if (objTabContainer != null)
                {
                    TabPanel objTabPanel = objTabContainer.FindControlRecursive("TabPanel2") as TabPanel;
                    if (objTabPanel != null)
                    {
                        /// txtPDE_VALOR_TOTAL
                        objPDE_VALOR_TOTAL = objTabPanel.FindControl("txtPDE_VALOR_TOTAL" + v.APT_ID.ToString()) as TextBox;
                        if (objPDE_VALOR_TOTAL != null && j.PDE_VALOR_TOTAL.ToString() != "")
                        {
                            decPDE_VALOR_TOTAL = (Int64)j.PDE_VALOR_TOTAL;
                            objPDE_VALOR_TOTAL.Text = decPDE_VALOR_TOTAL.ToString();// decPDE_VALOR_TOTAL.ToString("C", CultureInfo.CurrentCulture).Replace(" ", "").Replace("$", "").PadRight(2, '0');

                            //objPDE_VALOR_TOTAL.Text = String.Format("{0:0.00}", decPDE_VALOR_TOTAL);
                        }

                        /// txtPDE_RECURSOS_MUNICIPIO
                        objPDE_RECURSOS_MUNICIPIO = objTabPanel.FindControl("txtPDE_RECURSOS_MUNICIPIO" + v.APT_ID.ToString()) as TextBox;
                        if (objPDE_RECURSOS_MUNICIPIO != null && j.PDE_RECURSOS_MUNICIPIO.ToString() != "")
                        {
                            decPDE_RECURSOS_MUNICIPIO = (Int64)j.PDE_RECURSOS_MUNICIPIO;
                            objPDE_RECURSOS_MUNICIPIO.Text = decPDE_RECURSOS_MUNICIPIO.ToString();
                        }

                        /// txtPDE_RECURSOS_DEPARTMENTO
                        objPDE_RECURSOS_DEPARTMENTO = objTabPanel.FindControl("txtPDE_RECURSOS_DEPARTMENTO" + v.APT_ID.ToString()) as TextBox;
                        if (objPDE_RECURSOS_DEPARTMENTO != null && j.PDE_RECURSOS_DEPARTMENTO.ToString() != "")
                        {

                            decPDE_RECURSOS_DEPARTMENTO = (Int64)j.PDE_RECURSOS_DEPARTMENTO;
                            objPDE_RECURSOS_DEPARTMENTO.Text = decPDE_RECURSOS_DEPARTMENTO.ToString();//decPDE_RECURSOS_DEPARTMENTO.ToString("C", CultureInfo.CurrentCulture).Replace(" ", "").Replace("$", "");
                        }


                        /// txtPDE_RECURSOS_MINISTERIO
                        objPDE_RECURSOS_MINISTERIO = objTabPanel.FindControl("txtPDE_RECURSOS_MINISTERIO" + v.APT_ID.ToString()) as TextBox;
                        if (objPDE_RECURSOS_MINISTERIO != null && j.PDE_RECURSOS_MINISTERIO.ToString() != "")
                        {

                            decPDE_RECURSOS_MINISTERIO = (Int64)j.PDE_RECURSOS_MINISTERIO;
                            objPDE_RECURSOS_MINISTERIO.Text = decPDE_RECURSOS_MINISTERIO.ToString();//decPDE_RECURSOS_MINISTERIO.ToString("C", CultureInfo.CurrentCulture).Replace(" ", "").Replace("$", "");
                            
                        }

                        ///txtPDE_INGRESOS_PROPIOS
                        objPDE_INGRESOS_PROPIOS = objTabPanel.FindControl("txtPDE_INGRESOS_PROPIOS" + v.APT_ID.ToString()) as TextBox;
                        if (objPDE_INGRESOS_PROPIOS != null && j.PDE_INGRESOS_PROPIOS.ToString() != "")
                        {
                            decPDE_INGRESOS_PROPIOS = (Int64)j.PDE_INGRESOS_PROPIOS;
                            objPDE_INGRESOS_PROPIOS.Text = decPDE_INGRESOS_PROPIOS.ToString();//.ToString("C", CultureInfo.CurrentCulture).Replace(" ", "").Replace("$", "");
                        }

                        ///txtPDE_INGRESOS_PROPIOS
                        objPDE_OTROS_RECURSOS = objTabPanel.FindControl("txtPDE_OTROS_RECURSOS" + v.APT_ID.ToString()) as TextBox;
                        if (objPDE_OTROS_RECURSOS != null && j.PDE_OTROS_RECURSOS.ToString() != "")
                        {
                            decPDE_OTROS_RECURSOS = (Int64)j.PDE_OTROS_RECURSOS;
                            objPDE_OTROS_RECURSOS.Text = decPDE_OTROS_RECURSOS.ToString();// decPDE_OTROS_RECURSOS.ToString("C", CultureInfo.CurrentCulture).Replace(" ", "").Replace("$", "");

                        }


                    }
                }

            }
            #endregion




        }
        }
        catch (Exception ex)
        {

            throw new Exception(ex.Message.ToString(), ex);
            //ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }

    } 
    #endregion

    #region cargarDatosValoresIndicadores
    private void cargarDatosValoresIndicadores()
    {
        DataClasses.DataClassesProyectosDataContext
            contexto = new DataClasses.DataClassesProyectosDataContext();
        PlaceHolderIndicadores.Controls.Clear();
        var datosParametrizadosIndicadores = (
                            from a in contexto.APP_LINEAs
                            join b in contexto.APP_INDICADORES_LINEAs on a.LIN_ID equals b.LIN_ID
                            join c in contexto.APP_INDICADOREs on b.IND_ID equals c.IND_ID
                            where object.Equals(a.VIG_ID, ConfigurationManager.AppSettings["IDVigencia"].ToString()) && object.Equals(b.LIN_ID, ddlAppLineas.SelectedValue)
                            //select a
                            select new
                            {
                                c.IND_NOMBRE,
                                b.IND_ID,
                                c.IND_TIPO
                            }
                           );
        int i = 0;
        PlaceHolderIndicadores.Controls.Add(new LiteralControl("<table>"));
        PlaceHolderIndicadores.Controls.Add(new LiteralControl("<tr>"));
        PlaceHolderIndicadores.Controls.Add(new LiteralControl("<td>"));
        PlaceHolderIndicadores.Controls.Add(new LiteralControl("<td/>"));
        PlaceHolderIndicadores.Controls.Add(new LiteralControl("<tr/>"));
        foreach (var v in datosParametrizadosIndicadores)
        {
            //Preguntar si hay un dato relacionado
            var datosValoresIndicadores = (
                from j in contexto.APP_VALORES_INDICADORs
                where object.Equals(j.IND_ID, v.IND_ID) && object.Equals(j.PRO_ID, StrProId)
                select j
                );
            
            //PINTA NUEVAMENTE LOS CONTROLES
            PlaceHolderIndicadores.Controls.Add(new LiteralControl("<tr>"));
            Label myLabel = new Label();
            TextBox myTexBox = new TextBox();
            
            myLabel.Text = v.IND_NOMBRE;

            myLabel.ID = "Label" + i.ToString();
            myTexBox.ID = "txtIndicador" + i.ToString();

            RequiredFieldValidator objReqValidator = new RequiredFieldValidator();
            objReqValidator.ID = "reqValidator" + i.ToString();
            objReqValidator.ControlToValidate = myTexBox.ID;
            objReqValidator.ErrorMessage = "<b>PARTE B: </b> El campo " + myLabel.Text + " es obligatorio";
            objReqValidator.ValidationGroup = "grupParteA";
            objReqValidator.Text = "*";
            if (v.IND_TIPO == 1)
            {
                myTexBox.TextMode = TextBoxMode.MultiLine;
                myTexBox.Width = 650;
                myTexBox.Height = 1000;
                foreach (var w in datosValoresIndicadores)
                {
                    if (w.VAL_VALOR_TEXTO != null)
                    myTexBox.Text = w.VAL_VALOR_TEXTO.ToString();
                }
            }
            else if (v.IND_TIPO == 0)
            {
                foreach (var w in datosValoresIndicadores)
                {
                    Int64 int64Temp;
                    decimal decTemp;
                    if (w.VAL_VALOR.ToString() != "")
                    {
                        
                            decTemp = Convert.ToDecimal(w.VAL_VALOR.ToString());
                        int64Temp = (Int64)decTemp;
                        myTexBox.Text = int64Temp.ToString();
                    }
                }
            }
            PlaceHolderIndicadores.Controls.Add(new LiteralControl("<td class=style77  width=30%>"));
            PlaceHolderIndicadores.Controls.Add(myLabel);
            PlaceHolderIndicadores.Controls.Add(new LiteralControl("<td/>"));
            PlaceHolderIndicadores.Controls.Add(new LiteralControl("<td width=70%>"));
            PlaceHolderIndicadores.Controls.Add(myTexBox);
            PlaceHolderIndicadores.Controls.Add(objReqValidator);
            PlaceHolderIndicadores.Controls.Add(new LiteralControl("<td/>"));
            PlaceHolderIndicadores.Controls.Add(new LiteralControl("<tr/>"));
            i++;
        }
        PlaceHolderIndicadores.Controls.Add(new LiteralControl("<table/>"));
    }
    #endregion

    #region cargarDatosValoresDocumentos
    private void cargarDatosValoresDocumentos()
    {
        DataClasses.DataClassesProyectosDataContext
            contexto = new DataClasses.DataClassesProyectosDataContext();
        PlaceHolderDocumentos.Controls.Clear();
        var datosParametrizadosIndicadores = (
                            from a in contexto.APP_DOCUMENTOS_TIPO_ENTIDADEs
                            join b in contexto.APP_TIPO_DOCUMENTOs on a.TDO_ID equals b.TDO_ID
                            join c in contexto.APP_TIPOS_ENTIDADEs on a.TIP_ID equals c.TIP_ID
                            where object.Equals(a.TIP_ID, ddlTIP_NOMBRE.SelectedValue)
                            //select a
                            select new
                            {
                                b.TDO_NOMBRE,
                                a.TDO_ID,
                                a.TDO_NS
                            }
                           );
        int i = 0;
        PlaceHolderDocumentos.Controls.Add(new LiteralControl("<table>"));
        PlaceHolderDocumentos.Controls.Add(new LiteralControl("<tr>"));
        PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td>"));
        PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td/>"));
        PlaceHolderDocumentos.Controls.Add(new LiteralControl("<tr/>"));
        foreach (var v in datosParametrizadosIndicadores)
        {
            //Preguntar si hay un dato relacionado
            var datosValoresDocumentos = (
                from j in contexto.APP_TIPO_DOCUMENTOS_VALOREs
                where object.Equals(j.TDO_ID, v.TDO_ID) && object.Equals(j.PRO_ID, StrProId)
                select j
                );
            
            //PINTA NUEVAMENTE LOS CONTROLES
            PlaceHolderDocumentos.Controls.Add(new LiteralControl("<tr>"));
            HyperLink myHyperLink = new HyperLink();
            myHyperLink.ID = "lnkDocumento" + i.ToString();
            myHyperLink.Target = "_blank";

            Label myLabel = new Label();
            FileUpload myFileUpload = new FileUpload();
            myLabel.Text = v.TDO_NOMBRE;
            myLabel.ID = "lblDocumentos" + i.ToString();
            myFileUpload.ID = "fuDocumentos" + i.ToString();
            foreach (var w in datosValoresDocumentos)
            {
                myHyperLink.Text = w.TDV_NOMBRE.ToString();
                myHyperLink.NavigateUrl = "../archivos/" + w.TDV_NOMBRE.ToString();
                myHyperLink.Visible = true;
            }
            PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td class=style77  width=30%>"));
            PlaceHolderDocumentos.Controls.Add(myLabel);
            PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td/>"));
            PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td>"));
            PlaceHolderDocumentos.Controls.Add(myFileUpload);
            PlaceHolderDocumentos.Controls.Add(myHyperLink);
            PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td/>"));
            PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td>"));
            Label myLabelTipoDoc = new Label();
            myLabelTipoDoc.Text = v.TDO_NS;
            myLabelTipoDoc.ID = "lblDocumentosTipoDoc" + i.ToString();
            PlaceHolderDocumentos.Controls.Add(myLabelTipoDoc);
            PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td/>"));
            PlaceHolderDocumentos.Controls.Add(new LiteralControl("<tr/>"));


            

            i++;
        }
        PlaceHolderDocumentos.Controls.Add(new LiteralControl("<table/>"));
    }
    #endregion

    #region cargarDatosProponentes
    private void cargarDatosProponentes()
    {
        DataClasses.DataClassesProyectosDataContext
            contexto = new DataClasses.DataClassesProyectosDataContext();

        var datos = (from a in contexto.APP_PROPONENTEs
                     where (a.PRO_ID == Convert.ToDecimal(StrProIdProponente))
                     select a);

        foreach (var v in datos)
        {
            txtPRO_NIT.Text = StrUsuNit;
            txtPRO_RAZON_SOCIAL.Text = v.PRO_RAZON_SOCIAL;
            ddlTIP_NOMBRE.SelectedValue = v.TIP_ID.ToString();
            txtPRO_NOMBRE_REPRESENTANTE_LEGAL.Text = v.PRO_NOMBRE_REPRESENTANTE_LEGAL;
            txtPRO_DOCUMENTO_IDENTIDAD_REPRESENTANTE_LEGAL.Text = v.PRO_DOCUMENTO_IDENTIDAD_REPRESENTANTE_LEGAL;
            txtPRO_TIPO_VINCULACION_PERSONA.Text = v.PRO_TIPO_VINCULACION_PERSONA;

            if (!String.IsNullOrEmpty(v.ZON_ID))
            {
                string strDep = v.ZON_ID.Substring(0, 2);
                ddlDepartamento.SelectedValue = strDep;
                DataClasses.DataClassesProyectosDataContext contextoZonas = new DataClasses.DataClassesProyectosDataContext();
                var datosZonas = from a in contextoZonas.BAS_ZONAS_GEOGRAFICAs
                                 where object.Equals(a.ZON_PADRE_ID, strDep)
                                 select a;
                if (datosZonas != null)
                {
                    ddlMunicipio.DataSource = datosZonas;
                    ddlMunicipio.DataTextField = "ZON_NOMBRE";
                    ddlMunicipio.DataValueField = "ZON_ID";
                    ddlMunicipio.DataBind();
                    ddlMunicipio.SelectedValue = v.ZON_ID;
                }
            }

            if (!String.IsNullOrEmpty(v.ZON_ID_EXPEDICION_DOCUMENTO))
            {
                string strDep = v.ZON_ID_EXPEDICION_DOCUMENTO.Substring(0, 2);
                ddlDepartamentoExpedicionDocumento.SelectedValue = strDep;
                DataClasses.DataClassesProyectosDataContext contextoZonas = new DataClasses.DataClassesProyectosDataContext();
                var datosZonas = from a in contextoZonas.BAS_ZONAS_GEOGRAFICAs
                                 where object.Equals(a.ZON_PADRE_ID, strDep)
                                 select a;
                if (datosZonas != null)
                {
                    ddlMunicipioExpedicionDocumento.DataSource = datosZonas;
                    ddlMunicipioExpedicionDocumento.DataTextField = "ZON_NOMBRE";
                    ddlMunicipioExpedicionDocumento.DataValueField = "ZON_ID";
                    ddlMunicipioExpedicionDocumento.DataBind();
                    ddlMunicipioExpedicionDocumento.SelectedValue = v.ZON_ID;
                }
            }

            txtPRO_DIRECCION_REPRESENTANTE_LEGAL.Text = v.PRO_DIRECCION_REPRESENTANTE_LEGAL;
            txtPRO_TELEFONOS_REPRESENTANTE_LEGAL.Text = v.PRO_TELEFONOS_REPRESENTANTE_LEGAL;
            txtPRO_TELEFONO_CELULAR.Text = v.PRO_TELEFONO_CELULAR;
            txtPRO_FAX_REPRESENTANTE_LEGAL.Text = v.PRO_FAX_REPRESENTANTE_LEGAL;
            txtPRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL.Text = v.PRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL;
            txtPRO_BARRIO_COMUNA.Text = v.PRO_BARRIO_COMUNA;
            rblPRO_REGIMEN_TRIBUTARIO.SelectedValue = v.PRO_REGIMEN_TRIBUTARIO.ToString();
            rblPRO_GRAN_CONTRIBUYENTE.SelectedValue = v.PRO_GRAN_CONTRIBUYENTE.ToString();

            txtPRO_TARIFA.Text = v.PRO_TARIFA.ToString();
            rblPRO_RESPONSABLE_IVA.SelectedValue = v.PRO_RESPONSABLE_IVA.ToString();
            txtPRO_TARIFA_ICA.Text = v.PRO_TARIFA_ICA.ToString();


            //////////////////////////////////
            //      ART_ENTIDAD_UBICACION   //
            //////////////////////////////////
        }

    }
    #endregion

    #region cargarDatosProyectos
    private void cargarDatosProyectos()
    {
        DataClasses.DataClassesProyectosDataContext
            contexto = new DataClasses.DataClassesProyectosDataContext();

        var datos = (from a in contexto.APP_PROYECTOs
                     where (a.PRO_ID == Convert.ToDecimal(StrProId))
                     select a);

        foreach (var v in datos)
        {
            txtPRO_PERSONA_ENCARGADA_PROYECTO.Text = v.PRO_PERSONA_ENCARGADA_PROYECTO;
            txtPRO_TELEFONOS_PERSONA_ENCARGADA_PROYECTO.Text = v.PRO_TELEFONOS_PERSONA_ENCARGADA_PROYECTO;
            txtPRO_CORREO_PERSONA_ENCARGADA.Text = v.PRO_CORREO_PERSONA_ENCARGADA;
            ddlENT_ID.SelectedValue = v.ENT_ID.ToString();
            rblPRO_TIPO_CUENTA.SelectedValue = v.PRO_TIPO_CUENTA.ToString();
            txtPRO_NUMERO_CUENTA.Text = v.PRO_NUMERO_CUENTA;
            txtPRO_NOMBRE.Text = v.PRO_NOMBRE;
            if (!String.IsNullOrEmpty(v.LIN_ID.ToString()))
                ddlAppLineas.SelectedValue = v.LIN_ID.ToString();
            if (!String.IsNullOrEmpty(v.ARE_ID.ToString()))
                ddlAppAreas.SelectedValue = v.ARE_ID.ToString();
            if (v.PRO_ESTADO == 'M')
            {
                btnGrabarPaso1.Visible = false;
                btnGuardarPaso2.Visible = false;
                btnGuardarPaso3.Visible = false;
                btnSiguientePaso1.Visible = false;
                btnSiguientePaso2.Visible = false;
                btnSiguientePaso3.Visible = false;
                btnPaso4.Visible = false;
            }
            else
            {
                btnGrabarPaso1.Visible = true;
                btnGuardarPaso2.Visible = true;
                btnGuardarPaso3.Visible = true;
                btnSiguientePaso1.Visible = true;
                btnSiguientePaso2.Visible = true;
                btnSiguientePaso3.Visible = true;
                btnPaso4.Visible = true;
            }


            if (v.PRO_FECHA_FINAL.ToString() != "")
             txtPRO_FECHA_FINAL.Text  = Convert.ToDateTime(v.PRO_FECHA_FINAL).ToShortDateString();

            if (v.PRO_FECHA_INICIAL.ToString() != "")
                txtPRO_FECHA_INICIAL.Text = Convert.ToDateTime(v.PRO_FECHA_INICIAL).ToShortDateString();



            if (!String.IsNullOrEmpty(v.ZON_ID))
            {
                string strDep = v.ZON_ID.Substring(0, 2);
                ddlDepartamentoLugarProyecto.SelectedValue = strDep;
                DataClasses.DataClassesProyectosDataContext contextoZonas = new DataClasses.DataClassesProyectosDataContext();
                var datosZonas = from a in contextoZonas.BAS_ZONAS_GEOGRAFICAs
                                 where object.Equals(a.ZON_PADRE_ID, strDep)
                                 select a;
                if (datosZonas != null)
                {
                    ddlMunicipioLugarProyecto.DataSource = datosZonas;
                    ddlMunicipioLugarProyecto.DataTextField = "ZON_NOMBRE";
                    ddlMunicipioLugarProyecto.DataValueField = "ZON_ID";
                    ddlMunicipioLugarProyecto.DataBind();
                    ddlMunicipioLugarProyecto.SelectedValue = v.ZON_ID;
                }
            }

            if (!String.IsNullOrEmpty(v.ZON_ID_ENTIDAD_BANCARIA))
            {
                string strDep = v.ZON_ID_ENTIDAD_BANCARIA.Substring(0, 2);
                ddlDepartamentoEntidadBancaria.SelectedValue = strDep;
                DataClasses.DataClassesProyectosDataContext contextoZonas = new DataClasses.DataClassesProyectosDataContext();
                var datosZonas = from a in contextoZonas.BAS_ZONAS_GEOGRAFICAs
                                 where object.Equals(a.ZON_PADRE_ID, strDep)
                                 select a;
                if (datosZonas != null)
                {
                    ddlMunicipioEntidadBancaria.DataSource = datosZonas;
                    ddlMunicipioEntidadBancaria.DataTextField = "ZON_NOMBRE";
                    ddlMunicipioEntidadBancaria.DataValueField = "ZON_ID";
                    ddlMunicipioEntidadBancaria.DataBind();
                    ddlMunicipioEntidadBancaria.SelectedValue = v.ZON_ID;
                }
            }
        }

    }
    #endregion


    #region cargarDatosComponentes
    private void cargarDatosComponentes()
    {
        DataClasses.DataClassesProyectosDataContext
            contexto = new DataClasses.DataClassesProyectosDataContext();

        var datosComponente = (from a in contexto.APP_COMPONENTEs
                               where a.PRO_ID == Convert.ToDecimal(StrProId)
                               select a);
        foreach (var v in datosComponente)
        {
            txtCOM_JUSTIFICACION.Text = v.COM_JUSTIFICACION;
            txtCOM_DESCRIPCION.Text = v.COM_DESCRIPCION;
            txtCOM_OBJETIVO_GENERAL.Text = v.COM_OBJETIVO_GENERAL;
            txtCOM_OBJETIVOS_ESPECIFICOS.Text = v.COM_OBJETIVOS_ESPECIFICOS;

            if (v.COM_EMPLEOS_DESCRIPCION.ToString() != "")
            txtCOM_EMPLEOS_DESCRIPCION.Text = v.COM_EMPLEOS_DESCRIPCION.ToString();
            if (v.COM_EMPLEOS_DIRECTOS_TERMINO_FIJO.ToString() != "")
            txtCOM_EMPLEOS_DIRECTOS_TERMINO_FIJO.Text = v.COM_EMPLEOS_DIRECTOS_TERMINO_FIJO.ToString();
            if (v.COM_EMPLEOS_DIRECTOS_TERMINO_INDEFINIDO.ToString() != "")
            txtCOM_EMPLEOS_DIRECTOS_TERMINO_INDEFINIDO.Text = v.COM_EMPLEOS_DIRECTOS_TERMINO_INDEFINIDO.ToString();
            if (v.COM_EMPLEOS_DIRECTOS_TERMINO_NOMBRAMIENTOS.ToString() != "")
            txtCOM_EMPLEOS_DIRECTOS_TERMINO_NOMBRAMIENTOS.Text = v.COM_EMPLEOS_DIRECTOS_TERMINO_NOMBRAMIENTOS.ToString();
            if (v.COM_EMPLEOS_INDIRECTOS.ToString() != "")
            txtCOM_EMPLEOS_INDIRECTOS.Text = v.COM_EMPLEOS_INDIRECTOS.ToString();
            if (v.COM_EMPLEOS_TOTAL.ToString() != "")
            txtCOM_EMPLEOS_TOTAL.Text = v.COM_EMPLEOS_TOTAL.ToString();

            txtCOM_TRAYECTORIA_PROYECTO.Text = v.COM_TRAYECTORIA_PROYECTO;
            txtCOM_METAS.Text = v.COM_METAS;
            txtCOM_METAS_B.Text = v.COM_METAS_B;
            txtCOM_METAS_C.Text = v.COM_METAS_C;

            if (v.COM_FECHA_INICIO_FESTIVAL.ToString() != "")
            txtCOM_FECHA_INICIO_FESTIVAL.Text = Convert.ToDateTime(v.COM_FECHA_INICIO_FESTIVAL).ToShortDateString();
            if (v.COM_FECHA_FINAL_FESTIVAL.ToString() != "")
            txtCOM_FECHA_FINAL_FESTIVAL.Text = Convert.ToDateTime(v.COM_FECHA_FINAL_FESTIVAL).ToShortDateString();

        }

    }
    #endregion

    #region cargarDatosBeneficiarios
    private void cargarDatosBeneficiarios()
    {
        DataClasses.DataClassesProyectosDataContext
            contexto = new DataClasses.DataClassesProyectosDataContext();



        var datosBeneficiarios = (from a in contexto.APP_BENEFICIARIOs
                                  where a.PRO_ID == Convert.ToDecimal(StrProId)
                                  select a);
        foreach (var v in datosBeneficiarios)
        {
            txtBEE_TOTAL_BENEFICIADOS.Text = v.BEE_TOTAL_BENEFICIADOS.ToString();
            txtBEN_PERSONAS_ASISTENTES.Text = v.BEN_PERSONAS_ASISTENTES.ToString();
            txtBEN_NUMERO_ARTISTAS_NACIONALES.Text = v.BEN_NUMERO_ARTISTAS_NACIONALES.ToString();
            txtBEN_NUMERO_ARTISTAS_INTERNACIONALES.Text = v.BEN_NUMERO_ARTISTAS_INTERNACIONALES.ToString();
            txtBEN_PORCENTAJE_OCUPACION.Text = v.BEN_PORCENTAJE_OCUPACION.ToString();

            txtBEN_OTROS_7.Text =v.BEN_OTROS_7 ;
            txtBEN_OTROS_18.Text = v.BEN_OTROS_18;
            txtBEN_OTROS_27.Text = v.BEN_OTROS_27;
            txtBEN_OTROS_33.Text = v.BEN_OTROS_33;
            txtBEN_OTROS_44.Text = v.BEN_OTROS_44;
            txtBEN_OTROS_51.Text = v.BEN_OTROS_51;
            txtBEN_OTROS_52.Text = v.BEN_OTROS_52;
            txtBEN_OTROS_53.Text = v.BEN_OTROS_53;
            txtBEN_OTROS_54.Text = v.BEN_OTROS_54;
            txtBEN_OTROS_55.Text = v.BEN_OTROS_55;
        }


    }
    #endregion

    #region Cargue Tablas Basicas

    private void cargarAreas()
    {
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        var datos = from a in contexto.APP_AREAs
                    where object.Equals(a.VIG_ID, ConfigurationManager.AppSettings["IDVigencia"].ToString())
                    select a;
        if (datos == null) return;
        ddlAppAreas.DataSource = datos;
        ddlAppAreas.DataTextField = "ARE_NOMBRE";
        ddlAppAreas.DataValueField = "ARE_ID";
        ddlAppAreas.DataBind();
        ddlAppAreas.Items.Insert(0, new ListItem("--Seleccione--", ""));

    }
    private void cargarDepartamentos()
    {
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                    where object.Equals(a.ZON_PADRE_ID, null)
                    select a;
        if (datos == null) return;
        ddlDepartamento.DataSource = datos;
        ddlDepartamento.DataTextField = "ZON_NOMBRE";
        ddlDepartamento.DataValueField = "ZON_ID";
        ddlDepartamento.DataBind();
        ddlDepartamento.Items.Insert(0, new ListItem("--Seleccione--", ""));


        ddlDepartamentoLugarProyecto.DataSource = datos;
        ddlDepartamentoLugarProyecto.DataTextField = "ZON_NOMBRE";
        ddlDepartamentoLugarProyecto.DataValueField = "ZON_ID";
        ddlDepartamentoLugarProyecto.DataBind();
        ddlDepartamentoLugarProyecto.Items.Insert(0, new ListItem("--Seleccione--", ""));

        ddlDepartamentoExpedicionDocumento.DataSource = datos;
        ddlDepartamentoExpedicionDocumento.DataTextField = "ZON_NOMBRE";
        ddlDepartamentoExpedicionDocumento.DataValueField = "ZON_ID";
        ddlDepartamentoExpedicionDocumento.DataBind();
        ddlDepartamentoExpedicionDocumento.Items.Insert(0, new ListItem("--Seleccione--", ""));

        ddlDepartamentoEntidadBancaria.DataSource = datos;
        ddlDepartamentoEntidadBancaria.DataTextField = "ZON_NOMBRE";
        ddlDepartamentoEntidadBancaria.DataValueField = "ZON_ID";
        ddlDepartamentoEntidadBancaria.DataBind();
        ddlDepartamentoEntidadBancaria.Items.Insert(0, new ListItem("--Seleccione--", ""));

    }
    private void cargarLineas()
    {
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        var datos = from a in contexto.APP_LINEAs
                    where object.Equals(a.VIG_ID, ConfigurationManager.AppSettings["IDVigencia"].ToString())

                    select a;
        if (datos == null) return;
        ddlAppLineas.DataSource = datos;
        ddlAppLineas.DataTextField = "LIN_NOMBRE";
        ddlAppLineas.DataValueField = "LIN_ID";
        ddlAppLineas.DataBind();
        ddlAppLineas.Items.Insert(0, new ListItem("--Seleccione--", ""));

    }
    private void cargarEntidadesFinancieras()
    {
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        var datos = from a in contexto.BAS_ENTIDADES_FINANCIERAs
                    select a;
        if (datos == null) return;
        ddlENT_ID.DataSource = datos;
        ddlENT_ID.DataTextField = "ENT_NOMBRE";
        ddlENT_ID.DataValueField = "ENT_ID";
        ddlENT_ID.DataBind();
        ddlENT_ID.Items.Insert(0, new ListItem("--Seleccione--", ""));
    }
    private void cargarTiposEntidades()
    {
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        var datos = from a in contexto.APP_TIPOS_ENTIDADEs
                    where object.Equals(a.VIG_ID, ConfigurationManager.AppSettings["IDVigencia"].ToString())
                    select a;
        if (datos == null) return;
        ddlTIP_NOMBRE.DataSource = datos;
        ddlTIP_NOMBRE.DataTextField = "TIP_NOMBRE";
        ddlTIP_NOMBRE.DataValueField = "TIP_ID";
        ddlTIP_NOMBRE.DataBind();
        ddlTIP_NOMBRE.Items.Insert(0, new ListItem("--Seleccione--", ""));

    }
    #endregion

    protected void btnLoop_Click(object sender, EventArgs e)
    {
        AjaxControlToolkit.TabContainer container = (AjaxControlToolkit.TabContainer)TabContainer1;
        foreach (object obj in container.Controls)
        {
            if (obj is AjaxControlToolkit.TabPanel)
            {
                AjaxControlToolkit.TabPanel tabPanel = (AjaxControlToolkit.TabPanel)obj;
                foreach (object ctrl in tabPanel.Controls)
                {
                    if (ctrl is Control)
                    {
                        Control c = (Control)ctrl;
                        foreach (object innerCtrl in c.Controls)
                        {
                            if (innerCtrl is System.Web.UI.WebControls.TextBox)
                                Response.Write(((TextBox)innerCtrl).Text);
                        }
                    }
                }
            }
        }
        // Move to Tab 2
    }

    #region Paso 1
    protected void btnSiguientePaso1_Click(object sender, EventArgs e)
    {
        grabarpaso1();
        TabContainer1.ActiveTab = TabContainer1.Tabs[1];
    }

    protected void btnGrabarPaso1_Click(object sender, EventArgs e)
    {
        grabarpaso1();
    }

    private void grabarpaso1()
    {
        try
        {


            DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
            decimal retornoIdProponente = 0;

            //////////////////////////////////////////////
            //NO EXISTE PROPONENTE + NO EXISTE PROYECTO //
            //////////////////////////////////////////////
            if (StrProIdProponente == "")
            {
                #region ADICIONAR PROPONENTES
                //////////////////////////////////////////////
                //                                          //
                //             APP_PROPONENTES              //
                //                                          //
                //////////////////////////////////////////////
                DataClasses.APP_PROPONENTE objProponente = new DataClasses.APP_PROPONENTE();
                objProponente.PRO_NIT = txtPRO_NIT.Text;
                objProponente.PRO_RAZON_SOCIAL = txtPRO_RAZON_SOCIAL.Text;
                if (ddlTIP_NOMBRE.SelectedValue != "")
                    objProponente.TIP_ID = Convert.ToInt32(ddlTIP_NOMBRE.SelectedValue);
                if (ddlMunicipio.SelectedValue != "")
                    objProponente.ZON_ID = ddlMunicipio.SelectedValue;
                if (ddlMunicipioExpedicionDocumento.SelectedValue != "")
                    objProponente.ZON_ID_EXPEDICION_DOCUMENTO = ddlMunicipioExpedicionDocumento.SelectedValue;
                objProponente.PRO_NOMBRE_REPRESENTANTE_LEGAL = txtPRO_NOMBRE_REPRESENTANTE_LEGAL.Text;
                objProponente.PRO_DOCUMENTO_IDENTIDAD_REPRESENTANTE_LEGAL = txtPRO_DOCUMENTO_IDENTIDAD_REPRESENTANTE_LEGAL.Text;
                objProponente.PRO_DIRECCION_REPRESENTANTE_LEGAL = txtPRO_DIRECCION_REPRESENTANTE_LEGAL.Text;
                objProponente.PRO_TELEFONOS_REPRESENTANTE_LEGAL = txtPRO_TELEFONOS_REPRESENTANTE_LEGAL.Text;
                objProponente.PRO_TELEFONO_CELULAR = txtPRO_TELEFONO_CELULAR.Text;
                objProponente.PRO_FAX_REPRESENTANTE_LEGAL = txtPRO_FAX_REPRESENTANTE_LEGAL.Text;
                objProponente.PRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL = txtPRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL.Text;
                objProponente.PRO_BARRIO_COMUNA = txtPRO_BARRIO_COMUNA.Text;
                objProponente.PRO_TIPO_VINCULACION_PERSONA = txtPRO_TIPO_VINCULACION_PERSONA.Text;
                objProponente.USU_ID = Convert.ToDecimal(StrUsuId);

                if (!String.IsNullOrEmpty(rblPRO_REGIMEN_TRIBUTARIO.SelectedValue))
                    objProponente.PRO_REGIMEN_TRIBUTARIO = Convert.ToChar(rblPRO_REGIMEN_TRIBUTARIO.SelectedValue);

                if (!String.IsNullOrEmpty(rblPRO_GRAN_CONTRIBUYENTE.SelectedValue))
                    objProponente.PRO_GRAN_CONTRIBUYENTE = Convert.ToChar(rblPRO_GRAN_CONTRIBUYENTE.SelectedValue);

                if (txtPRO_TARIFA.Text != "")
                    objProponente.PRO_TARIFA = Convert.ToDecimal(txtPRO_TARIFA.Text);

                if (!String.IsNullOrEmpty(rblPRO_RESPONSABLE_IVA.SelectedValue))
                    objProponente.PRO_RESPONSABLE_IVA = Convert.ToChar(rblPRO_RESPONSABLE_IVA.SelectedValue);


                if (txtPRO_TARIFA_ICA.Text != "")
                    objProponente.PRO_TARIFA_ICA = Convert.ToDecimal(txtPRO_TARIFA_ICA.Text);

                contexto.APP_PROPONENTEs.InsertOnSubmit(objProponente);
                contexto.SubmitChanges();
                retornoIdProponente = objProponente.PRO_ID;
                StrProIdProponente = objProponente.PRO_ID.ToString();
                #endregion

                #region ADIONAR PROYECTOS
                //////////////////////////////////////////////
                //                                          //
                //             APP_PROYECTOS                //
                //                                          //
                //////////////////////////////////////////////

                DataClasses.APP_PROYECTO objProyecto = new DataClasses.APP_PROYECTO();
                objProyecto.PRO_PERSONA_ENCARGADA_PROYECTO = txtPRO_PERSONA_ENCARGADA_PROYECTO.Text;
                objProyecto.PRO_TELEFONOS_PERSONA_ENCARGADA_PROYECTO = txtPRO_TELEFONOS_PERSONA_ENCARGADA_PROYECTO.Text;
                objProyecto.PRO_CORREO_PERSONA_ENCARGADA = txtPRO_CORREO_PERSONA_ENCARGADA.Text;
                if (ddlENT_ID.SelectedValue != "")
                    objProyecto.ENT_ID = Convert.ToDecimal(ddlENT_ID.SelectedValue);

                objProyecto.PRO_TIPO_CUENTA = Convert.ToChar(rblPRO_TIPO_CUENTA.SelectedValue);
                objProyecto.PRO_NUMERO_CUENTA = txtPRO_NUMERO_CUENTA.Text;
                if (ddlMunicipioEntidadBancaria.SelectedValue != "")
                    objProyecto.ZON_ID_ENTIDAD_BANCARIA = ddlMunicipioEntidadBancaria.SelectedValue;
                objProyecto.PRO_ID_PROPONENTE = retornoIdProponente;
                objProyecto.PRO_ESTADO = 'R';
                objProyecto.VIG_ID = Convert.ToDecimal(ConfigurationManager.AppSettings["IDVigencia"].ToString());
                contexto.APP_PROYECTOs.InsertOnSubmit(objProyecto);
                contexto.SubmitChanges();
                StrProId = objProyecto.PRO_ID.ToString();
                #endregion
            }
            //////////////////////////////////////////////
            //EXISTE PROPONENTE PERO NO EXISTE PROYECTO //
            //////////////////////////////////////////////
            else if (StrProIdProponente != "" && StrProId == "")
            {
                ///////////////////////////////////////////////////////////////
                //ACTUALIZA DATOS DEL PROPONENTE Y AGREGA DATOS DEL PROYECTO //
                ///////////////////////////////////////////////////////////////

                #region Actualiza datos proponente
                var datos = (from a in contexto.APP_PROPONENTEs
                             where a.PRO_ID == Convert.ToDecimal(StrProIdProponente)
                             select a
                                );
                foreach (var v in datos)
                {
                    v.PRO_NIT = txtPRO_NIT.Text;
                    v.PRO_RAZON_SOCIAL = txtPRO_RAZON_SOCIAL.Text;
                    if (ddlTIP_NOMBRE.SelectedValue != "")
                        v.TIP_ID = Convert.ToInt32(ddlTIP_NOMBRE.SelectedValue);
                    v.ZON_ID = ddlMunicipio.SelectedValue;
                    if (ddlMunicipioExpedicionDocumento.SelectedValue != "")
                        v.ZON_ID_EXPEDICION_DOCUMENTO = ddlMunicipioExpedicionDocumento.SelectedValue;
                    v.PRO_NOMBRE_REPRESENTANTE_LEGAL = txtPRO_NOMBRE_REPRESENTANTE_LEGAL.Text;
                    v.PRO_DOCUMENTO_IDENTIDAD_REPRESENTANTE_LEGAL = txtPRO_DOCUMENTO_IDENTIDAD_REPRESENTANTE_LEGAL.Text;
                    v.PRO_DIRECCION_REPRESENTANTE_LEGAL = txtPRO_DIRECCION_REPRESENTANTE_LEGAL.Text;
                    v.PRO_TELEFONOS_REPRESENTANTE_LEGAL = txtPRO_TELEFONOS_REPRESENTANTE_LEGAL.Text;
                    v.PRO_TELEFONO_CELULAR = txtPRO_TELEFONO_CELULAR.Text;
                    v.PRO_FAX_REPRESENTANTE_LEGAL = txtPRO_FAX_REPRESENTANTE_LEGAL.Text;
                    v.PRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL = txtPRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL.Text;
                    v.PRO_BARRIO_COMUNA = txtPRO_BARRIO_COMUNA.Text;
                    v.PRO_TIPO_VINCULACION_PERSONA = txtPRO_TIPO_VINCULACION_PERSONA.Text;
                    retornoIdProponente = Convert.ToDecimal(StrProIdProponente);

                    if (!String.IsNullOrEmpty(rblPRO_REGIMEN_TRIBUTARIO.SelectedValue))
                        v.PRO_REGIMEN_TRIBUTARIO = Convert.ToChar(rblPRO_REGIMEN_TRIBUTARIO.SelectedValue);

                    if (!String.IsNullOrEmpty(rblPRO_GRAN_CONTRIBUYENTE.SelectedValue))
                        v.PRO_GRAN_CONTRIBUYENTE = Convert.ToChar(rblPRO_GRAN_CONTRIBUYENTE.SelectedValue);

                    if (txtPRO_TARIFA.Text != "")
                        v.PRO_TARIFA = Convert.ToDecimal(txtPRO_TARIFA.Text);

                    if (!String.IsNullOrEmpty(rblPRO_RESPONSABLE_IVA.SelectedValue))
                        v.PRO_RESPONSABLE_IVA = Convert.ToChar(rblPRO_RESPONSABLE_IVA.SelectedValue);


                    if (txtPRO_TARIFA_ICA.Text != "")
                        v.PRO_TARIFA_ICA = Convert.ToDecimal(txtPRO_TARIFA_ICA.Text);
                }
                #endregion

                #region Adiona datos del proyecto
                DataClasses.APP_PROYECTO objProyecto = new DataClasses.APP_PROYECTO();
                objProyecto.PRO_PERSONA_ENCARGADA_PROYECTO = txtPRO_PERSONA_ENCARGADA_PROYECTO.Text;
                objProyecto.PRO_TELEFONOS_PERSONA_ENCARGADA_PROYECTO = txtPRO_TELEFONOS_PERSONA_ENCARGADA_PROYECTO.Text;
                objProyecto.PRO_CORREO_PERSONA_ENCARGADA = txtPRO_CORREO_PERSONA_ENCARGADA.Text;
                objProyecto.ENT_ID = Convert.ToDecimal(ddlENT_ID.SelectedValue);
                objProyecto.PRO_TIPO_CUENTA = Convert.ToChar(rblPRO_TIPO_CUENTA.SelectedValue);
                objProyecto.PRO_NUMERO_CUENTA = txtPRO_NUMERO_CUENTA.Text;
                objProyecto.PRO_ID_PROPONENTE = retornoIdProponente;
                objProyecto.PRO_ESTADO = 'R';
                if (ddlMunicipioEntidadBancaria.SelectedValue != "")
                    objProyecto.ZON_ID_ENTIDAD_BANCARIA = ddlMunicipioEntidadBancaria.SelectedValue;
                objProyecto.VIG_ID = Convert.ToDecimal(ConfigurationManager.AppSettings["IDVigencia"].ToString());
                contexto.APP_PROYECTOs.InsertOnSubmit(objProyecto);
                #endregion
                contexto.SubmitChanges();
                StrProId = objProyecto.PRO_ID.ToString();

            }

            //////////////////////////////////////////////
            //  EXISTE PROPONENTE + EXISTE PROYECTO     //
            //////////////////////////////////////////////
            else if (StrProIdProponente != "" && StrProId != "")
            {
                ///////////////////////////////////////////////////////////////
                //ACTUALIZA DATOS DEL PROPONENTE Y AGREGA DATOS DEL PROYECTO //
                ///////////////////////////////////////////////////////////////

                #region Actualiza datos proponente
                var datos = (from a in contexto.APP_PROPONENTEs
                             where a.PRO_ID == Convert.ToDecimal(StrProIdProponente)
                             select a
                                );
                foreach (var v in datos)
                {
                    v.PRO_NIT = txtPRO_NIT.Text;
                    v.PRO_RAZON_SOCIAL = txtPRO_RAZON_SOCIAL.Text;

                    if (ddlTIP_NOMBRE.SelectedValue != "")
                        v.TIP_ID = Convert.ToInt32(ddlTIP_NOMBRE.SelectedValue);

                    if (ddlMunicipio.SelectedValue != "")
                        v.ZON_ID = ddlMunicipio.SelectedValue;

                    if (ddlMunicipioExpedicionDocumento.SelectedValue != "")
                        v.ZON_ID_EXPEDICION_DOCUMENTO = ddlMunicipioExpedicionDocumento.SelectedValue;

                    v.PRO_NOMBRE_REPRESENTANTE_LEGAL = txtPRO_NOMBRE_REPRESENTANTE_LEGAL.Text;
                    v.PRO_DOCUMENTO_IDENTIDAD_REPRESENTANTE_LEGAL = txtPRO_DOCUMENTO_IDENTIDAD_REPRESENTANTE_LEGAL.Text;
                    v.PRO_DIRECCION_REPRESENTANTE_LEGAL = txtPRO_DIRECCION_REPRESENTANTE_LEGAL.Text;
                    v.PRO_TELEFONOS_REPRESENTANTE_LEGAL = txtPRO_TELEFONOS_REPRESENTANTE_LEGAL.Text;
                    v.PRO_TELEFONO_CELULAR = txtPRO_TELEFONO_CELULAR.Text;
                    v.PRO_FAX_REPRESENTANTE_LEGAL = txtPRO_FAX_REPRESENTANTE_LEGAL.Text;
                    v.PRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL = txtPRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL.Text;
                    v.PRO_BARRIO_COMUNA = txtPRO_BARRIO_COMUNA.Text;
                    v.PRO_TIPO_VINCULACION_PERSONA = txtPRO_TIPO_VINCULACION_PERSONA.Text;
                    if (!String.IsNullOrEmpty(rblPRO_REGIMEN_TRIBUTARIO.SelectedValue))
                        v.PRO_REGIMEN_TRIBUTARIO = Convert.ToChar(rblPRO_REGIMEN_TRIBUTARIO.SelectedValue);

                    if (!String.IsNullOrEmpty(rblPRO_GRAN_CONTRIBUYENTE.SelectedValue))
                        v.PRO_GRAN_CONTRIBUYENTE = Convert.ToChar(rblPRO_GRAN_CONTRIBUYENTE.SelectedValue);

                    if (txtPRO_TARIFA.Text != "")
                        v.PRO_TARIFA = Convert.ToDecimal(txtPRO_TARIFA.Text);

                    if (!String.IsNullOrEmpty(rblPRO_RESPONSABLE_IVA.SelectedValue))
                        v.PRO_RESPONSABLE_IVA = Convert.ToChar(rblPRO_RESPONSABLE_IVA.SelectedValue);


                    if (txtPRO_TARIFA_ICA.Text != "")
                        v.PRO_TARIFA_ICA = Convert.ToDecimal(txtPRO_TARIFA_ICA.Text);

                }
                #endregion

                #region Actualiza datos del proyecto
                var datosProyectos = (from a in contexto.APP_PROYECTOs
                                      where a.PRO_ID == Convert.ToDecimal(StrProId)
                                      select a
                                   );
                foreach (var v in datosProyectos)
                {
                    v.PRO_PERSONA_ENCARGADA_PROYECTO = txtPRO_PERSONA_ENCARGADA_PROYECTO.Text;
                    v.PRO_TELEFONOS_PERSONA_ENCARGADA_PROYECTO = txtPRO_TELEFONOS_PERSONA_ENCARGADA_PROYECTO.Text;
                    v.PRO_CORREO_PERSONA_ENCARGADA = txtPRO_CORREO_PERSONA_ENCARGADA.Text;
                    v.ENT_ID = Convert.ToDecimal(ddlENT_ID.SelectedValue);
                    v.PRO_TIPO_CUENTA = Convert.ToChar(rblPRO_TIPO_CUENTA.SelectedValue);
                    v.PRO_NUMERO_CUENTA = txtPRO_NUMERO_CUENTA.Text;
                    v.PRO_ESTADO = 'R';
                    v.PRO_ID_PROPONENTE = Convert.ToDecimal(StrProIdProponente);
                    if (ddlMunicipioEntidadBancaria.SelectedValue != "")
                        v.ZON_ID_ENTIDAD_BANCARIA = ddlMunicipioEntidadBancaria.SelectedValue;
                }

                contexto.SubmitChanges();



                #endregion

            }
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_parteA", "alert('La información de la (Parte A) se guardo exitosamente');", true);
            TabPanel2.Enabled = true;
            TabPanel3.Enabled = true;
            TabPanel4.Enabled = true;


        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }
    }



    #endregion

    #region Paso 2

    protected void btnGuardarPaso2_Click(object sender, EventArgs e)
    {
        grabarpaso2();
    }

    protected void btnSiguientePaso2_Click(object sender, EventArgs e)
    {
        grabarpaso2();
        TabContainer1.ActiveTab = TabContainer1.Tabs[2];
    }

    private void grabarpaso2()
    {
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        try
        {
                #region grabar Paso 2
            decimal decPDE_RECURSOS_MINISTERIO = 0;
            decimal decPDE_VALOR_TOTAL = 0;

                if (String.IsNullOrEmpty(StrProId))
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_parteB_err", "alert('Debe salvar primero la información (Parte A) del formulario');", true);
                    return;
                }
                else
                {

                    

                    ///////////////////////////////////////
                    //            COMPONENTES            //
                    ///////////////////////////////////////
                    decimal decComId = 0;

                    #region Actualizar
                    var datosComponente = (from a in contexto.APP_COMPONENTEs
                                           where a.PRO_ID == Convert.ToDecimal(StrProId)
                                           select a);
                    foreach (var v in datosComponente)
                    {
                        v.COM_JUSTIFICACION = txtCOM_JUSTIFICACION.Text;
                        v.COM_DESCRIPCION = txtCOM_DESCRIPCION.Text;
                        v.COM_OBJETIVO_GENERAL = txtCOM_OBJETIVO_GENERAL.Text;
                        v.COM_OBJETIVOS_ESPECIFICOS = txtCOM_OBJETIVOS_ESPECIFICOS.Text;
                        v.COM_EMPLEOS_DESCRIPCION = txtCOM_EMPLEOS_DESCRIPCION.Text;
                        if (txtCOM_EMPLEOS_DIRECTOS_TERMINO_FIJO.Text != "")
                            v.COM_EMPLEOS_DIRECTOS_TERMINO_FIJO = Convert.ToDecimal(txtCOM_EMPLEOS_DIRECTOS_TERMINO_FIJO.Text);

                        if (txtCOM_EMPLEOS_DIRECTOS_TERMINO_INDEFINIDO.Text != "")
                            v.COM_EMPLEOS_DIRECTOS_TERMINO_INDEFINIDO = Convert.ToDecimal(txtCOM_EMPLEOS_DIRECTOS_TERMINO_INDEFINIDO.Text);

                        if (txtCOM_EMPLEOS_DIRECTOS_TERMINO_NOMBRAMIENTOS.Text != "")
                            v.COM_EMPLEOS_DIRECTOS_TERMINO_NOMBRAMIENTOS = Convert.ToDecimal(txtCOM_EMPLEOS_DIRECTOS_TERMINO_NOMBRAMIENTOS.Text);

                        if (txtCOM_EMPLEOS_INDIRECTOS.Text != "")
                            v.COM_EMPLEOS_INDIRECTOS = Convert.ToDecimal(txtCOM_EMPLEOS_INDIRECTOS.Text);

                        if (txtCOM_EMPLEOS_TOTAL.Text != "")
                            v.COM_EMPLEOS_TOTAL = Convert.ToDecimal(txtCOM_EMPLEOS_TOTAL.Text);



                        if (txtCOM_EMPLEOS_INDIRECTOS.Text != "")
                            v.COM_EMPLEOS_INDIRECTOS = Convert.ToDecimal(txtCOM_EMPLEOS_INDIRECTOS.Text);

                        v.COM_METAS = txtCOM_METAS.Text;
                        v.COM_METAS_B = txtCOM_METAS_B.Text;
                        v.COM_METAS_C = txtCOM_METAS_C.Text;

                        v.COM_TRAYECTORIA_PROYECTO = txtCOM_TRAYECTORIA_PROYECTO.Text;

                        //if (txtCOM_FECHA_INICIO_FESTIVAL.Text != "")
                        //{
                        //    DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
                        //    dtfi.ShortDatePattern = "MM/dd/yyyy";
                        //    dtfi.DateSeparator = "/";
                        //    DateTime objDateFechaInicio = Convert.ToDateTime(txtCOM_FECHA_INICIO_FESTIVAL.Text, dtfi);
                        //    v.COM_FECHA_INICIO_FESTIVAL = objDateFechaInicio;
                        //}
                        if (txtCOM_FECHA_INICIO_FESTIVAL.Text != "")
                            v.COM_FECHA_INICIO_FESTIVAL = Convert.ToDateTime(txtCOM_FECHA_INICIO_FESTIVAL.Text);

                        //if (txtCOM_FECHA_FINAL_FESTIVAL.Text != "")
                        //{
                        //    DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
                        //    dtfi.ShortDatePattern = "MM/dd/yyyy";
                        //    dtfi.DateSeparator = "/";
                        //    DateTime objDateFechafinal = Convert.ToDateTime(txtCOM_FECHA_FINAL_FESTIVAL.Text, dtfi);
                        //    v.COM_FECHA_FINAL_FESTIVAL = objDateFechafinal;
                        //}

                        if (txtCOM_FECHA_FINAL_FESTIVAL.Text != "")
                            v.COM_FECHA_FINAL_FESTIVAL = Convert.ToDateTime(txtCOM_FECHA_FINAL_FESTIVAL.Text);
                        v.PRO_ID = Convert.ToDecimal(StrProId);

                        decComId = v.COM_ID;
                    }
                    #endregion

                    #region Adicionar

                    DataClasses.APP_COMPONENTE objComponentes = new DataClasses.APP_COMPONENTE();

                    if (decComId == 0)
                    {
                        #region Adiciona datos de Componetes
                        objComponentes.COM_JUSTIFICACION = txtCOM_JUSTIFICACION.Text;
                        objComponentes.COM_DESCRIPCION = txtCOM_DESCRIPCION.Text;
                        objComponentes.COM_OBJETIVO_GENERAL = txtCOM_OBJETIVO_GENERAL.Text;
                        objComponentes.COM_OBJETIVOS_ESPECIFICOS = txtCOM_OBJETIVOS_ESPECIFICOS.Text;



                        objComponentes.COM_EMPLEOS_DESCRIPCION = txtCOM_EMPLEOS_DESCRIPCION.Text;

                        if (txtCOM_EMPLEOS_DIRECTOS_TERMINO_FIJO.Text != "")
                            objComponentes.COM_EMPLEOS_DIRECTOS_TERMINO_FIJO = Convert.ToDecimal(txtCOM_EMPLEOS_DIRECTOS_TERMINO_FIJO.Text);

                        if (txtCOM_EMPLEOS_DIRECTOS_TERMINO_INDEFINIDO.Text != "")
                            objComponentes.COM_EMPLEOS_DIRECTOS_TERMINO_INDEFINIDO = Convert.ToDecimal(txtCOM_EMPLEOS_DIRECTOS_TERMINO_INDEFINIDO.Text);

                        if (txtCOM_EMPLEOS_DIRECTOS_TERMINO_NOMBRAMIENTOS.Text != "")
                            objComponentes.COM_EMPLEOS_DIRECTOS_TERMINO_NOMBRAMIENTOS = Convert.ToDecimal(txtCOM_EMPLEOS_DIRECTOS_TERMINO_NOMBRAMIENTOS.Text);

                        if (txtCOM_EMPLEOS_INDIRECTOS.Text != "")
                            objComponentes.COM_EMPLEOS_INDIRECTOS = Convert.ToDecimal(txtCOM_EMPLEOS_INDIRECTOS.Text);

                        if (txtCOM_EMPLEOS_TOTAL.Text != "")
                            objComponentes.COM_EMPLEOS_TOTAL = Convert.ToDecimal(txtCOM_EMPLEOS_TOTAL.Text);

                        if (txtCOM_EMPLEOS_INDIRECTOS.Text != "")
                            objComponentes.COM_EMPLEOS_INDIRECTOS = Convert.ToDecimal(txtCOM_EMPLEOS_INDIRECTOS.Text);

                        objComponentes.COM_METAS = txtCOM_METAS.Text;
                        objComponentes.COM_METAS_B = txtCOM_METAS_B.Text;
                        objComponentes.COM_METAS_C = txtCOM_METAS_C.Text;

                        objComponentes.COM_TRAYECTORIA_PROYECTO = txtCOM_TRAYECTORIA_PROYECTO.Text;

                        //if (txtCOM_FECHA_INICIO_FESTIVAL.Text != "")
                        //{
                        //    DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
                        //    dtfi.ShortDatePattern = "MM/dd/yyyy";
                        //    dtfi.DateSeparator = "/";
                        //    DateTime objDateFechaInicio = Convert.ToDateTime(txtCOM_FECHA_INICIO_FESTIVAL.Text, dtfi);
                        //    objComponentes.COM_FECHA_INICIO_FESTIVAL = objDateFechaInicio;
                        //}


                        if (txtCOM_FECHA_INICIO_FESTIVAL.Text != "")
                            objComponentes.COM_FECHA_INICIO_FESTIVAL = Convert.ToDateTime(txtCOM_FECHA_INICIO_FESTIVAL.Text);

                        //if (txtCOM_FECHA_FINAL_FESTIVAL.Text != "")
                        //{
                        //    DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
                        //    dtfi.ShortDatePattern = "MM/dd/yyyy";
                        //    dtfi.DateSeparator = "/";
                        //    DateTime objDateFechafinal = Convert.ToDateTime(txtCOM_FECHA_FINAL_FESTIVAL.Text, dtfi);
                        //    objComponentes.COM_FECHA_FINAL_FESTIVAL = objDateFechafinal;
                        //}

                        if (txtCOM_FECHA_FINAL_FESTIVAL.Text != "")
                            objComponentes.COM_FECHA_FINAL_FESTIVAL = Convert.ToDateTime(txtCOM_FECHA_FINAL_FESTIVAL.Text);

                        objComponentes.PRO_ID = Convert.ToDecimal(StrProId);
                        contexto.APP_COMPONENTEs.InsertOnSubmit(objComponentes);
                        #endregion
                    }
                    #endregion


                    ///////////////////////////////////////
                    //          BENEFICIARIOS            //
                    ///////////////////////////////////////
                    decimal decBennId = 0;
                    #region Atualizar
                    var datosBeneficiarios = (from a in contexto.APP_BENEFICIARIOs
                                              where a.PRO_ID == Convert.ToDecimal(StrProId)
                                              select a);
                    foreach (var v in datosBeneficiarios)
                    {
                        decBennId = v.BEN_ID;
                        if (txtBEE_TOTAL_BENEFICIADOS.Text != "")
                            v.BEE_TOTAL_BENEFICIADOS = Convert.ToDecimal(txtBEE_TOTAL_BENEFICIADOS.Text);

                        if (txtBEN_PERSONAS_ASISTENTES.Text != "")
                            v.BEN_PERSONAS_ASISTENTES = Convert.ToDecimal(txtBEN_PERSONAS_ASISTENTES.Text);

                        if (txtBEN_NUMERO_ARTISTAS_NACIONALES.Text != "")
                            v.BEN_NUMERO_ARTISTAS_NACIONALES = Convert.ToDecimal(txtBEN_NUMERO_ARTISTAS_NACIONALES.Text);

                        if (txtBEN_NUMERO_ARTISTAS_INTERNACIONALES.Text != "")
                            v.BEN_NUMERO_ARTISTAS_INTERNACIONALES = Convert.ToDecimal(txtBEN_NUMERO_ARTISTAS_INTERNACIONALES.Text);

                        if (txtBEN_PORCENTAJE_OCUPACION.Text != "")
                            v.BEN_PORCENTAJE_OCUPACION = Convert.ToDecimal(txtBEN_PORCENTAJE_OCUPACION.Text);

                        v.BEN_OTROS_7 = txtBEN_OTROS_7.Text;
                        v.BEN_OTROS_18 = txtBEN_OTROS_18.Text;
                        v.BEN_OTROS_27 = txtBEN_OTROS_27.Text;
                        v.BEN_OTROS_33 = txtBEN_OTROS_33.Text;
                        v.BEN_OTROS_44 = txtBEN_OTROS_44.Text;
                        v.BEN_OTROS_51 = txtBEN_OTROS_51.Text;
                        v.BEN_OTROS_52 = txtBEN_OTROS_52.Text;
                        v.BEN_OTROS_53 = txtBEN_OTROS_53.Text;
                        v.BEN_OTROS_54 = txtBEN_OTROS_54.Text;
                        v.BEN_OTROS_55 = txtBEN_OTROS_55.Text;

                        v.PRO_ID = Convert.ToDecimal(StrProId);
                    }
                    #endregion

                    #region Adicionar
                    DataClasses.APP_BENEFICIARIO objBeneficiarios = new DataClasses.APP_BENEFICIARIO();

                    if (decBennId == 0)
                    {
                        if (txtBEE_TOTAL_BENEFICIADOS.Text != "")
                            objBeneficiarios.BEE_TOTAL_BENEFICIADOS = Convert.ToDecimal(txtBEE_TOTAL_BENEFICIADOS.Text);

                        if (txtBEN_PERSONAS_ASISTENTES.Text != "")
                            objBeneficiarios.BEN_PERSONAS_ASISTENTES = Convert.ToDecimal(txtBEN_PERSONAS_ASISTENTES.Text);

                        if (txtBEN_NUMERO_ARTISTAS_NACIONALES.Text != "")
                            objBeneficiarios.BEN_NUMERO_ARTISTAS_NACIONALES = Convert.ToDecimal(txtBEN_NUMERO_ARTISTAS_NACIONALES.Text);

                        if (txtBEN_NUMERO_ARTISTAS_INTERNACIONALES.Text != "")
                            objBeneficiarios.BEN_NUMERO_ARTISTAS_INTERNACIONALES = Convert.ToDecimal(txtBEN_NUMERO_ARTISTAS_INTERNACIONALES.Text);

                        if (txtBEN_PORCENTAJE_OCUPACION.Text != "")
                            objBeneficiarios.BEN_PORCENTAJE_OCUPACION = Convert.ToDecimal(txtBEN_PORCENTAJE_OCUPACION.Text);

                        objBeneficiarios.BEN_OTROS_7 = txtBEN_OTROS_7.Text;
                        objBeneficiarios.BEN_OTROS_18 = txtBEN_OTROS_18.Text;
                        objBeneficiarios.BEN_OTROS_27 = txtBEN_OTROS_27.Text;
                        objBeneficiarios.BEN_OTROS_33 = txtBEN_OTROS_33.Text;
                        objBeneficiarios.BEN_OTROS_44 = txtBEN_OTROS_44.Text;
                        objBeneficiarios.BEN_OTROS_51 = txtBEN_OTROS_51.Text;
                        objBeneficiarios.BEN_OTROS_52 = txtBEN_OTROS_52.Text;
                        objBeneficiarios.BEN_OTROS_53 = txtBEN_OTROS_53.Text;
                        objBeneficiarios.BEN_OTROS_54 = txtBEN_OTROS_54.Text;
                        objBeneficiarios.BEN_OTROS_55 = txtBEN_OTROS_55.Text;

                        objBeneficiarios.PRO_ID = Convert.ToDecimal(StrProId);

                        contexto.APP_BENEFICIARIOs.InsertOnSubmit(objBeneficiarios);
                    }

                    #endregion



                    ///////////////////////////////////////
                    //    VALORES INDICADORES            //
                    ///////////////////////////////////////
                    if (ddlAppLineas.SelectedValue != "")
                    {
                        #region Borrar y Adicionar Valores indicadores
                        var datosParaBorrarValoresIndicadores = (from h in contexto.APP_VALORES_INDICADORs
                                                                 //join b in contexto.ART_ENTIDAD_UBICACIONs on a.ENT_ID equals b.ENT_ID
                                                                 //join c in contexto.ART_ENTIDADES_TEATROs on a.ENT_ID equals c.ENT_ID
                                                                 where h.PRO_ID == Convert.ToDecimal(StrProId)
                                                                 select h
                                      );

                        foreach (var datoaBorrar in datosParaBorrarValoresIndicadores)
                        {
                            contexto.APP_VALORES_INDICADORs.DeleteOnSubmit(datoaBorrar);
                        }



                        var datosParametrizadosIndicadores = (
                                     from a in contexto.APP_LINEAs
                                     join b in contexto.APP_INDICADORES_LINEAs on a.LIN_ID equals b.LIN_ID
                                     join c in contexto.APP_INDICADOREs on b.IND_ID equals c.IND_ID
                                     where object.Equals(a.VIG_ID, ConfigurationManager.AppSettings["IDVigencia"].ToString()) && object.Equals(b.LIN_ID, ddlAppLineas.SelectedValue)
                                     //select a
                                     select new
                                     {
                                         c.IND_NOMBRE,
                                         b.IND_ID,
                                         c.IND_TIPO
                                     }
                                    );


                        int i = 0;
                        foreach (var v in datosParametrizadosIndicadores)
                        {
                            TextBox myTexBox = (TextBox)PlaceHolderIndicadores.FindControl("txtIndicador" + i.ToString());

                            if (myTexBox != null && myTexBox.Text != "")
                            {
                                DataClasses.APP_VALORES_INDICADOR objValoresIndicadores = new DataClasses.APP_VALORES_INDICADOR();

                                if (v.IND_TIPO == 1)
                                    objValoresIndicadores.VAL_VALOR_TEXTO = myTexBox.Text;
                                else if (v.IND_TIPO == 0)
                                    objValoresIndicadores.VAL_VALOR = Convert.ToDecimal(myTexBox.Text);
                                objValoresIndicadores.PRO_ID = Convert.ToDecimal(StrProId);
                                objValoresIndicadores.IND_ID = v.IND_ID;
                                contexto.APP_VALORES_INDICADORs.InsertOnSubmit(objValoresIndicadores);
                            }

                            i++;
                        }
                        #endregion
                    }


                    ///////////////////////////////////////
                    //    APP_PRESUPUESTO_GENERAL        //
                    ///////////////////////////////////////

                    #region Borra
                    var datosBorrarPresupuestoDetalle = (from j in contexto.APP_PRESUPUESTO_DETALLEs
                                                         //join b in contexto.ART_ENTIDAD_UBICACIONs on a.ENT_ID equals b.ENT_ID
                                                         //join c in contexto.ART_ENTIDADES_TEATROs on a.ENT_ID equals c.ENT_ID
                                                         where j.PRO_ID == Convert.ToDecimal(StrProId)
                                                         select j
                                             );

                    foreach (var datoaBorrar in datosBorrarPresupuestoDetalle)
                    {
                        contexto.APP_PRESUPUESTO_DETALLEs.DeleteOnSubmit(datoaBorrar);
                    }
                    #endregion

                    #region Adiciona
                    var datosPresupuestoDetalle = (from a in contexto.APP_PRESUPUESTO_DETALLEs
                                                   where a.PRO_ID == Convert.ToDecimal(StrProId)
                                                   select a);

                    var datosPresupuestoDetalleTipos = (from a in contexto.APP_PRESUPUESTO_DETALLE_TIPOs

                                                        select a);
                    foreach (var v in datosPresupuestoDetalleTipos)
                    {

                        DataClasses.APP_PRESUPUESTO_DETALLE objPresupuestoDetalle = new DataClasses.APP_PRESUPUESTO_DETALLE();
                        ContentPlaceHolder contentPage = Master.FindControl("MainContent") as ContentPlaceHolder;
                        TabContainer objTabContainer = contentPage.FindControl("TabContainer1") as TabContainer;
                        TextBox objPDE_VALOR_TOTAL = new TextBox();
                        TextBox objPDE_RECURSOS_MUNICIPIO = new TextBox();
                        TextBox objPDE_RECURSOS_DEPARTMENTO = new TextBox();
                        TextBox objPDE_RECURSOS_MINISTERIO = new TextBox();
                        TextBox objPDE_INGRESOS_PROPIOS = new TextBox();
                        TextBox objPDE_OTROS_RECURSOS = new TextBox();

                        if (objTabContainer != null)
                        {
                            TabPanel objTabPanel = objTabContainer.FindControlRecursive("TabPanel2") as TabPanel;
                            if (objTabPanel != null)
                            {
                                /// txtPDE_VALOR_TOTAL
                                objPDE_VALOR_TOTAL = objTabPanel.FindControl("txtPDE_VALOR_TOTAL" + v.APT_ID.ToString()) as TextBox;
                                if (objPDE_VALOR_TOTAL != null && objPDE_VALOR_TOTAL.Text != "")
                                {
                                    objPresupuestoDetalle.PDE_VALOR_TOTAL = Convert.ToInt64(objPDE_VALOR_TOTAL.Text);
                                    if (v.APT_ID == 48)
                                        decPDE_VALOR_TOTAL = Convert.ToInt64(objPDE_VALOR_TOTAL.Text);
                                }

                                /// txtPDE_RECURSOS_MUNICIPIO
                                objPDE_RECURSOS_MUNICIPIO = objTabPanel.FindControl("txtPDE_RECURSOS_MUNICIPIO" + v.APT_ID.ToString()) as TextBox;
                                if (objPDE_RECURSOS_MUNICIPIO != null && objPDE_RECURSOS_MUNICIPIO.Text != "")
                                    objPresupuestoDetalle.PDE_RECURSOS_MUNICIPIO = Convert.ToInt64(objPDE_RECURSOS_MUNICIPIO.Text);


                                /// txtPDE_RECURSOS_DEPARTMENTO
                                objPDE_RECURSOS_DEPARTMENTO = objTabPanel.FindControl("txtPDE_RECURSOS_DEPARTMENTO" + v.APT_ID.ToString()) as TextBox;
                                if (objPDE_RECURSOS_DEPARTMENTO != null && objPDE_RECURSOS_DEPARTMENTO.Text != "")
                                    objPresupuestoDetalle.PDE_RECURSOS_DEPARTMENTO = Convert.ToInt64(objPDE_RECURSOS_DEPARTMENTO.Text);

                                /// txtPDE_RECURSOS_MINISTERIO
                                objPDE_RECURSOS_MINISTERIO = objTabPanel.FindControl("txtPDE_RECURSOS_MINISTERIO" + v.APT_ID.ToString()) as TextBox;
                                if (objPDE_RECURSOS_MINISTERIO != null && objPDE_RECURSOS_MINISTERIO.Text != "")
                                {
                                    objPresupuestoDetalle.PDE_RECURSOS_MINISTERIO = Convert.ToInt64(objPDE_RECURSOS_MINISTERIO.Text);
                                    if (v.APT_ID == 49)
                                        decPDE_RECURSOS_MINISTERIO = Convert.ToInt64(objPDE_RECURSOS_MINISTERIO.Text);
                                }

                                ///txtPDE_INGRESOS_PROPIOS1
                                objPDE_INGRESOS_PROPIOS = objTabPanel.FindControl("txtPDE_INGRESOS_PROPIOS" + v.APT_ID.ToString()) as TextBox;
                                if (objPDE_INGRESOS_PROPIOS != null && objPDE_INGRESOS_PROPIOS.Text != "")
                                    objPresupuestoDetalle.PDE_INGRESOS_PROPIOS = Convert.ToInt64(objPDE_INGRESOS_PROPIOS.Text);

                                ///txtPDE_INGRESOS_PROPIOS1
                                objPDE_OTROS_RECURSOS = objTabPanel.FindControl("txtPDE_OTROS_RECURSOS" + v.APT_ID.ToString()) as TextBox;
                                if (objPDE_OTROS_RECURSOS != null && objPDE_OTROS_RECURSOS.Text != "")
                                    objPresupuestoDetalle.PDE_OTROS_RECURSOS = Convert.ToInt64(objPDE_OTROS_RECURSOS.Text);
                            }
                        }
                        objPresupuestoDetalle.APT_ID = v.APT_ID;
                        objPresupuestoDetalle.PRO_ID = Convert.ToDecimal(StrProId);
                        contexto.APP_PRESUPUESTO_DETALLEs.InsertOnSubmit(objPresupuestoDetalle);


                    }
                    #endregion

                    //////////////////////////////////////////
                    //   APP_PROYECTOS                      //
                    //////////////////////////////////////////


                    #region Actualiza datos del proyecto
                    var datosProyectos = (from a in contexto.APP_PROYECTOs
                                          where a.PRO_ID == Convert.ToDecimal(StrProId)
                                          select a);
                    foreach (var v in datosProyectos)
                    {
                        v.PRO_NOMBRE = txtPRO_NOMBRE.Text;
                        if (!String.IsNullOrEmpty(ddlAppLineas.SelectedValue))
                            v.LIN_ID = Convert.ToDecimal(ddlAppLineas.SelectedValue);
                        if (!String.IsNullOrEmpty(ddlAppAreas.SelectedValue))
                            v.ARE_ID = Convert.ToDecimal(ddlAppAreas.SelectedValue);
                        if (!String.IsNullOrEmpty(ddlMunicipioLugarProyecto.SelectedValue))
                            v.ZON_ID = ddlMunicipioLugarProyecto.SelectedValue;

                        if (txtPRO_FECHA_FINAL.Text != "")
                            v.PRO_FECHA_FINAL = Convert.ToDateTime(txtPRO_FECHA_FINAL.Text);

                        if (txtPRO_FECHA_INICIAL.Text != "")
                            v.PRO_FECHA_INICIAL = Convert.ToDateTime(txtPRO_FECHA_INICIAL.Text);
                        v.PRO_ESTADO = 'R';
                        v.TIP_ID = 116;

                        v.PRO_VALOR_SOLICITADO = decPDE_RECURSOS_MINISTERIO;
                        v.PRO_VALOR_PROYECTO = decPDE_VALOR_TOTAL;

                    }
                    #endregion
                    //// GUARDAR GENERAL
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_parteA", "alert('La información de la (Parte B) se guardo exitosamente');", true);
                    contexto.SubmitChanges();
                }
                #endregion
        }
        catch (Exception ex)
        {

            throw new Exception(ex.Message.ToString(), ex);
            //ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }
        DataClasses.DataClassesProyectosDataContext contexto2 = new DataClasses.DataClassesProyectosDataContext();
        try
        {
            ///////////////////////////////////////
            //    APP_SITIOS_REALIZACION        //
            ///////////////////////////////////////

            #region Borra
            var datosBorrarSitiosRealizacion = (from r in contexto2.APP_SITIOS_REALIZACIONs
                                                //join b in contexto.ART_ENTIDAD_UBICACIONs on a.ENT_ID equals b.ENT_ID
                                                //join c in contexto.ART_ENTIDADES_TEATROs on a.ENT_ID equals c.ENT_ID
                                                where r.PRO_ID == Convert.ToDecimal(StrProId)
                                                select r
                                     );

            foreach (var datoaBorrarSitios in datosBorrarSitiosRealizacion)
            {
                contexto2.APP_SITIOS_REALIZACIONs.DeleteOnSubmit(datoaBorrarSitios);
            }
            #endregion

            #region Adicionar
            DataClasses.APP_SITIOS_REALIZACION objSitiosRealizacion = new DataClasses.APP_SITIOS_REALIZACION();
            objSitiosRealizacion.PRO_ID = Convert.ToDecimal(StrProId);
            if (!String.IsNullOrEmpty(ddlMunicipioLugarProyecto.SelectedValue))
            {
                objSitiosRealizacion.ZON_ID = ddlMunicipioLugarProyecto.SelectedValue;
                objSitiosRealizacion.ZON_PADRE_ID = ddlMunicipioLugarProyecto.SelectedValue.Substring(0, 2);
                contexto2.APP_SITIOS_REALIZACIONs.InsertOnSubmit(objSitiosRealizacion);
            }

            contexto2.SubmitChanges();


            #endregion

        }
        catch (Exception ex)
        {

            throw new Exception(ex.Message.ToString(), ex);
            //ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }
    }




    #endregion

    #region Paso 3
    private void grabarPaso3()
    {
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        try
        {
            if (String.IsNullOrEmpty(StrProId))
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_parteB_err", "alert('Debe salvar primero la información (Parte A) del formulario');", true);
                return;
            }
            else
            {
                ///////////////////////////////////////
                //    VALORES DOCUMENTOS            //
                ///////////////////////////////////////
                if (ddlTIP_NOMBRE.SelectedValue != "")
                {
                    #region Borrar y Adicionar Valores Documentos
                    var datosParaBorrarValoresDocumentos = (from h in contexto.APP_TIPO_DOCUMENTOS_VALOREs
                                                            //join b in contexto.ART_ENTIDAD_UBICACIONs on a.ENT_ID equals b.ENT_ID
                                                            //join c in contexto.ART_ENTIDADES_TEATROs on a.ENT_ID equals c.ENT_ID
                                                            where h.PRO_ID == Convert.ToDecimal(StrProId)
                                                            select h
                                  );

                    foreach (var datoaBorrar in datosParaBorrarValoresDocumentos)
                    {
                        contexto.APP_TIPO_DOCUMENTOS_VALOREs.DeleteOnSubmit(datoaBorrar);
                    }

                    var datosParametrizadosDocumentos = (
                                 from a in contexto.APP_DOCUMENTOS_TIPO_ENTIDADEs
                                 join b in contexto.APP_TIPO_DOCUMENTOs on a.TDO_ID equals b.TDO_ID
                                 join c in contexto.APP_TIPOS_ENTIDADEs on a.TIP_ID equals c.TIP_ID
                                 where object.Equals(a.TIP_ID, ddlTIP_NOMBRE.SelectedValue)
                                 //select a
                                 select new
                                 {
                                     b.TDO_NOMBRE,
                                     b.TDO_ID
                                 }
                                );
                    int i = 0;
                    foreach (var v in datosParametrizadosDocumentos)
                    {
                        // traer el  nombre del archivo para no borrar todos los documentos
                        var datosValoresDocumentos = (
               from j in contexto.APP_TIPO_DOCUMENTOS_VALOREs
               where object.Equals(j.TDO_ID, v.TDO_ID) && object.Equals(j.PRO_ID, StrProId)
               select j
               );

                        

                        FileUpload myFileUpload = (FileUpload)PlaceHolderDocumentos.FindControl("fuDocumentos" + i.ToString());
                        HyperLink myHyperLink = (HyperLink)PlaceHolderDocumentos.FindControl("lnkDocumento" + i.ToString());
                        if (myFileUpload != null && myHyperLink != null)
                        {
                            foreach (var w in datosValoresDocumentos)
                            {
                                myHyperLink.Text = w.TDV_NOMBRE.ToString();
                                myHyperLink.NavigateUrl = "../archivos/" + w.TDV_NOMBRE.ToString();
                                myHyperLink.Visible = true;
                                myHyperLink.Target = "_blank";
                            }

                            DataClasses.APP_TIPO_DOCUMENTOS_VALORE objValoresDocumentos = new DataClasses.APP_TIPO_DOCUMENTOS_VALORE();
                            if (!myHyperLink.Visible || myFileUpload.HasFile)
                            {
                                DeleteFile(myHyperLink.Text);
                                objValoresDocumentos.TDV_NOMBRE = salvarArchivo(myFileUpload, ref myHyperLink);

                            }
                            else
                                objValoresDocumentos.TDV_NOMBRE = myHyperLink.Text;
                            // busca el documento lo salva fisicamente y 
                            objValoresDocumentos.PRO_ID = Convert.ToDecimal(StrProId);
                            objValoresDocumentos.TDO_ID = v.TDO_ID;
                            contexto.APP_TIPO_DOCUMENTOS_VALOREs.InsertOnSubmit(objValoresDocumentos);
                        }

                        i++;
                    }
                    #endregion
                }
                //// GUARDAR GENERAL
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_parteA", "alert('La información de (Documentos) se guardo exitosamente');", true);
                contexto.SubmitChanges();

            }




        }
        catch (Exception ex)
        {

            throw new Exception(ex.Message.ToString(), ex);
            //ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }
    }

    protected void btnGuardarPaso3_Click(object sender, EventArgs e)
    {
        grabarPaso3();
    }

    protected void btnSiguientePaso3_Click(object sender, EventArgs e)
    {
        grabarPaso3();
        TabContainer1.ActiveTab = TabContainer1.Tabs[3];
    }

    #region DeleteFile
    private void DeleteFile(string strFileName)
    {

        strFileName = ConfigurationManager.AppSettings["rutaArchivos"] + strFileName;
        //Delete file from the server

        if (strFileName.Trim().Length > 0)
        {
            FileInfo fi = new FileInfo(strFileName);
            if (fi.Exists) //if file exists delete it
            {
                fi.Delete();
            }
        }
    }
    #endregion

    #region salvarArchivo
    private string salvarArchivo(FileUpload fileUpload1, ref HyperLink lnkArchivoLocal)
    {
        string strNombreArchivo = null;
        if (fileUpload1 != null && lnkArchivoLocal != null)
        {

            if (fileUpload1.HasFile)
            {
                strNombreArchivo = DateTime.Now.ToString().Replace("/", "-").Replace(":", ".") + "_" +
                                       fileUpload1.FileName;
                //Obtiene el nombre del archivo
                //Obtiene la locacion fisica del archivo
                int nIndex = 0;
                string strLocation = ConfigurationManager.AppSettings["rutaArchivos"];//Server.MapPath("Archivos");
                //Salva el archivo
                fileUpload1.PostedFile.SaveAs(strLocation + strNombreArchivo);
                //actualiza el link del archivo

                lnkArchivoLocal.Text = strNombreArchivo;
                string path = this.Request.Url.AbsolutePath;
                if (nIndex > 0)
                {
                    path = path.Substring(0, nIndex);
                }


                lnkArchivoLocal.NavigateUrl =  "../Archivos/" + strNombreArchivo;
                // GetPath() + "/" + RelativePath + "/" + strNombreArchivo;
                //txtDocumentoOculto.Text = FileUploaded; //para que funcione el custom validator
                lnkArchivoLocal.Visible = true;
                lnkArchivoLocal.Target = "_blank";
                //btnEliminarArchivoDocumento.Visible = true;

                //lblFileMessage.CssClass = "fila1";
                //lblFileMessage.Text = "Por favor no cargue documentos que superen los " + this.MaxLength + " Kb";


            }
            //else
            //{
            //    algo = "No file was uploaded.";
            //}


        }
        return strNombreArchivo;
    }
    #endregion
    #endregion


    #region ddlDepartamento SelectedIndexChanged
    protected void ddlDepartamento_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlDepartamento.SelectedValue == "") return;
        if (ddlDepartamento.SelectedValue == "0")
        {
            ddlMunicipio.Items.Clear();
            return;
        }
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                    where object.Equals(a.ZON_PADRE_ID, ddlDepartamento.SelectedValue)
                    select a;
        if (datos == null) return;
        ddlMunicipio.DataSource = datos;
        ddlMunicipio.DataTextField = "ZON_NOMBRE";
        ddlMunicipio.DataValueField = "ZON_ID";
        ddlMunicipio.DataBind();
    }

    protected void ddlDepartamentoLugarProyecto_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlDepartamentoLugarProyecto.SelectedValue == "") return;
        if (ddlDepartamentoLugarProyecto.SelectedValue == "0")
        {
            ddlMunicipioLugarProyecto.Items.Clear();
            return;
        }
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                    where object.Equals(a.ZON_PADRE_ID, ddlDepartamentoLugarProyecto.SelectedValue)
                    select a;
        if (datos == null) return;
        ddlMunicipioLugarProyecto.DataSource = datos;
        ddlMunicipioLugarProyecto.DataTextField = "ZON_NOMBRE";
        ddlMunicipioLugarProyecto.DataValueField = "ZON_ID";
        ddlMunicipioLugarProyecto.DataBind();

    }

    protected void ddlDepartamentoExpedicionDocumento_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlDepartamentoExpedicionDocumento.SelectedValue == "") return;
        if (ddlDepartamentoExpedicionDocumento.SelectedValue == "0")
        {
            ddlMunicipio.Items.Clear();
            return;
        }
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                    where object.Equals(a.ZON_PADRE_ID, ddlDepartamentoExpedicionDocumento.SelectedValue)
                    select a;
        if (datos == null) return;
        ddlMunicipioExpedicionDocumento.DataSource = datos;
        ddlMunicipioExpedicionDocumento.DataTextField = "ZON_NOMBRE";
        ddlMunicipioExpedicionDocumento.DataValueField = "ZON_ID";
        ddlMunicipioExpedicionDocumento.DataBind();
    }

    protected void ddlDepartamentoEntidadBancaria_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlDepartamentoEntidadBancaria.SelectedValue == "") return;
        if (ddlDepartamentoEntidadBancaria.SelectedValue == "0")
        {
            ddlMunicipio.Items.Clear();
            return;
        }
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                    where object.Equals(a.ZON_PADRE_ID, ddlDepartamentoEntidadBancaria.SelectedValue)
                    select a;
        if (datos == null) return;
        ddlMunicipioEntidadBancaria.DataSource = datos;
        ddlMunicipioEntidadBancaria.DataTextField = "ZON_NOMBRE";
        ddlMunicipioEntidadBancaria.DataValueField = "ZON_ID";
        ddlMunicipioEntidadBancaria.DataBind();
    }
    #endregion

    ///////////////////////////////////////////
    //                                       //
    //  Eventos grid interno ddlist          //
    //                                       //
    ///////////////////////////////////////////

    #region GetDataView
    private DataTable GetDataView(ASPxGridView grid)
    {
        DataTable dt = new DataTable();
        foreach (GridViewColumn col in grid.VisibleColumns)
        {
            GridViewDataColumn dataColumn = col as GridViewDataColumn;
            if (dataColumn == null) continue;
            dt.Columns.Add(dataColumn.FieldName);
        }
        for (int i = 0; i < grid.VisibleRowCount; i++)
        {
            DataRow row = dt.Rows.Add();
            foreach (DataColumn col in dt.Columns)
                row[col.ColumnName] = grid.GetRowValues(i, col.ColumnName);
        }
        return dt;
    }
    #endregion


    #region GridView_InitNewRow
    protected void GridView_InitNewRow(object sender, ASPxDataInitNewRowEventArgs e)
    {
        ASPxGridView grid = sender as ASPxGridView;
        grid.ScrollToVisibleIndexOnClient = 0;
    }
    #endregion


    /////////////////////////////////////
    //                                 //
    //          CRONOGRAMA             //
    //                                 //
    /////////////////////////////////////

    #region BindDatosCronograma
    private void BindDatosCronograma()
    {
        try
        {
            //Consulta a la base de datos
            DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
            var datos = from a in contexto.APP_PROYECTOS_CRONOGRAMAs
                        where object.Equals(a.PRO_ID, StrProId)
                        select a;
            if (datos == null) return;
            ASPxGridViewCronograma.BeginUpdate();
            ASPxGridViewCronograma.DataSource = datos;// objProductosComercialesRendimientosData.DefaultView;
            ASPxGridViewCronograma.DataBind();
            ASPxGridViewCronograma.EndUpdate();
            CronogramaDataTableCache = GetDataView(ASPxGridViewCronograma);
        }
        catch (Exception ex)
        {
            ex.Message.ToString();
            throw;
        }


    }
    #endregion

    #region ASPxGridViewCronograma_RowInserting
    protected void ASPxGridViewCronograma_RowInserting(object sender, ASPxDataInsertingEventArgs e)
    {
        //object values = ASPxGridViewSubActividades.GetRowValues(ASPxGridViewSubActividades.FocusedRowIndex, new string[] { "PSU_ID" });


        //CAMBIAR POR PRO?ID
        ASPxGridViewCronograma.DataSource = null;
        if (StrProId != null)
        {
            DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
            DataClasses.APP_PROYECTOS_CRONOGRAMA objAppCronograma = new DataClasses.APP_PROYECTOS_CRONOGRAMA();

            objAppCronograma.PRO_ID = Convert.ToDecimal(StrProId);
            objAppCronograma.CPR_ACTIVIDAD = e.NewValues["CPR_ACTIVIDAD"].ToString();

            DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
            dtfi.ShortDatePattern = "MM/dd/yyyy";
            dtfi.DateSeparator = "/";
            DateTime objDate = Convert.ToDateTime(e.NewValues["CPR_FECHA_INICIO"].ToString(), dtfi);
            objAppCronograma.CPR_FECHA_INICIO = objDate;

            DateTimeFormatInfo dtfi2 = new DateTimeFormatInfo();
            dtfi2.ShortDatePattern = "MM/dd/yyyy";
            dtfi2.DateSeparator = "/";
            DateTime objDate2 = Convert.ToDateTime(e.NewValues["CPR_FECHA_FINAL"].ToString(), dtfi2);

            objAppCronograma.CPR_FECHA_FINAL = objDate2;

            contexto.APP_PROYECTOS_CRONOGRAMAs.InsertOnSubmit(objAppCronograma);
            contexto.SubmitChanges();
            //Cancel automatic update
            e.Cancel = true;
            //back to the browse mode
            ((ASPxGridView)sender).CancelEdit();
            BindDatosCronograma();

        }
    }
    #endregion

    #region ASPxGridViewCronograma_RowDeleting
    protected void ASPxGridViewCronograma_RowDeleting(object sender, ASPxDataDeletingEventArgs e)
    {
        object values = ASPxGridViewCronograma.GetRowValues(ASPxGridViewCronograma.FocusedRowIndex, new string[] { "CPR_ID" });

        try
        {
            //Consulta a la base de datos
            DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
            DataClasses.APP_PROYECTOS_CRONOGRAMA objAppCronograma = new DataClasses.APP_PROYECTOS_CRONOGRAMA();
            var datosEliminar = (from a in contexto.APP_PROYECTOS_CRONOGRAMAs
                                 where object.Equals(a.CPR_ID, values.ToString())
                                 select a);
            if (datosEliminar == null) return;

            foreach (var detail in datosEliminar)
            {
                contexto.APP_PROYECTOS_CRONOGRAMAs.DeleteOnSubmit(detail);
            }
            contexto.SubmitChanges();

            //object valuesCprId = ASPxGridViewSubActividades.GetRowValues(ASPxGridViewSubActividades.FocusedRowIndex, new string[] { "PSU_ID" });
            ASPxGridViewCronograma.DataSource = null;
            CronogramaDataTableCache = null;
            BindDatosCronograma();
        }
        catch (Exception ex)
        {
            ex.Message.ToString();
            throw;
        }


        //Cancel automatic update
        e.Cancel = true;
        //back to the browse mode
        ((ASPxGridView)sender).CancelEdit();

    }
    #endregion

    #region ASPxGridViewCronograma_RowUpdating
    protected void ASPxGridViewCronograma_RowUpdating(object sender, ASPxDataUpdatingEventArgs e)
    {
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        var datos = from a in contexto.APP_PROYECTOS_CRONOGRAMAs
                    where object.Equals(a.CPR_ID, e.Keys["CPR_ID"].ToString())
                    select a;

        foreach (var v in datos)
        {
            v.CPR_ACTIVIDAD = e.NewValues["CPR_ACTIVIDAD"].ToString();


            DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
            dtfi.ShortDatePattern = "MM/dd/yyyy";
            dtfi.DateSeparator = "/";
            DateTime objDate = Convert.ToDateTime(e.NewValues["CPR_FECHA_INICIO"].ToString(), dtfi);
            v.CPR_FECHA_INICIO = objDate;

            DateTimeFormatInfo dtfi2 = new DateTimeFormatInfo();
            dtfi2.ShortDatePattern = "MM/dd/yyyy";
            dtfi2.DateSeparator = "/";
            DateTime objDate2 = Convert.ToDateTime(e.NewValues["CPR_FECHA_FINAL"].ToString(), dtfi2);
            v.CPR_FECHA_FINAL = objDate2;
        }
        contexto.SubmitChanges();
        //Cancel automatic update
        e.Cancel = true;
        //back to the browse mode
        ((ASPxGridView)sender).CancelEdit();

        //object values = ASPxGridViewSubActividades.GetRowValues(ASPxGridViewSubActividades.FocusedRowIndex, new string[] { "PSU_ID" });

        ASPxGridViewCronograma.DataSource = null;
        CronogramaDataTableCache = null;
        if (StrProId == null) return;
        BindDatosCronograma();
    }
    #endregion

    /////////////////////////////////////
    //                                 //
    //          APOYOS                 //
    //                                 //
    /////////////////////////////////////

    #region BindDatosApoyos
    private void BindDatosApoyos()
    {
        try
        {
            //Consulta a la base de datos
            DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
            var datos = from a in contexto.APP_APOYOs
                        where object.Equals(a.PRO_ID, StrProId)
                        select a;
            if (datos == null) return;
            ASPxGridViewApoyo.BeginUpdate();
            ASPxGridViewApoyo.DataSource = datos;// objProductosComercialesRendimientosData.DefaultView;
            ASPxGridViewApoyo.DataBind();
            ASPxGridViewApoyo.EndUpdate();
            ApoyosDataTableCache = GetDataView(ASPxGridViewApoyo);
        }
        catch (Exception ex)
        {
            ex.Message.ToString();
            throw;
        }


    }
    #endregion

    #region ASPxGridViewApoyo_RowInserting
    protected void ASPxGridViewApoyo_RowInserting(object sender, ASPxDataInsertingEventArgs e)
    {
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        DataClasses.APP_APOYO objAppApoyo = new DataClasses.APP_APOYO();
        objAppApoyo.PRO_ID = Convert.ToDecimal(StrProId);
        objAppApoyo.APO_NOMBRE = e.NewValues["APO_NOMBRE"].ToString();
        //objAppApoyo.APO_CLASE_APOYO = e.NewValues["APO_CLASE_APOYO"].ToString();
        objAppApoyo.APP_VALOR = Convert.ToDecimal(e.NewValues["APP_VALOR"].ToString());
        contexto.APP_APOYOs.InsertOnSubmit(objAppApoyo);
        contexto.SubmitChanges();
        //Cancel automatic update
        e.Cancel = true;
        //back to the browse mode
        ((ASPxGridView)sender).CancelEdit();
        BindDatosApoyos();
    }
    #endregion

    #region ASPxGridViewApoyo_RowDeleting
    protected void ASPxGridViewApoyo_RowDeleting(object sender, ASPxDataDeletingEventArgs e)
    {
        object values = ASPxGridViewApoyo.GetRowValues(ASPxGridViewApoyo.FocusedRowIndex, new string[] { "APO_ID" });
        try
        {
            //Consulta a la base de datos
            DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
            DataClasses.APP_APOYO objAppApoyo = new DataClasses.APP_APOYO();
            var datosEliminar = (from a in contexto.APP_APOYOs
                                 where object.Equals(a.APO_ID, values.ToString())
                                 select a);
            if (datosEliminar == null) return;

            foreach (var detail in datosEliminar)
            {
                contexto.APP_APOYOs.DeleteOnSubmit(detail);
            }
            contexto.SubmitChanges();

            ASPxGridViewApoyo.DataSource = null;
            ApoyosDataTableCache = null;
            BindDatosApoyos();
        }
        catch (Exception ex)
        {
            ex.Message.ToString();
            throw;
        }


        //Cancel automatic update
        e.Cancel = true;
        //back to the browse mode
        ((ASPxGridView)sender).CancelEdit();
    }
    #endregion

    #region ASPxGridViewApoyo_RowUpdating
    protected void ASPxGridViewApoyo_RowUpdating(object sender, ASPxDataUpdatingEventArgs e)
    {
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        var datos = from a in contexto.APP_APOYOs
                    where object.Equals(a.APO_ID, e.Keys["APO_ID"].ToString())
                    select a;

        foreach (var v in datos)
        {
            v.PRO_ID = Convert.ToDecimal(StrProId);
            v.APO_NOMBRE = e.NewValues["APO_NOMBRE"].ToString();
            //v.APO_CLASE_APOYO = e.NewValues["APO_CLASE_APOYO"].ToString();
            v.APP_VALOR = Convert.ToDecimal(e.NewValues["APP_VALOR"].ToString());
        }
        contexto.SubmitChanges();
        //Cancel automatic update
        e.Cancel = true;
        //back to the browse mode
        ((ASPxGridView)sender).CancelEdit();
        BindDatosApoyos();
    }
    #endregion


    /////////////////////////////////////
    //                                 //
    //          INDICADORES            //
    //                                 //
    /////////////////////////////////////

    #region cargarControlesLineas
    private void cargarControlesLineas(string strLinea)
    {
        try
        {
            PlaceHolderIndicadores.Controls.Clear();
            //Consulta a la base de datos
            DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
            var datos = (
                         from a in contexto.APP_LINEAs
                         join b in contexto.APP_INDICADORES_LINEAs on a.LIN_ID equals b.LIN_ID
                         join c in contexto.APP_INDICADOREs on b.IND_ID equals c.IND_ID
                         where object.Equals(a.VIG_ID, ConfigurationManager.AppSettings["IDVigencia"].ToString()) && object.Equals(b.LIN_ID, strLinea)
                         //select a
                         select new
                         {
                             c.IND_NOMBRE,
                             c.IND_TIPO
                         }
                        );

            PlaceHolderIndicadores.Controls.Add(new LiteralControl("<table>"));
            PlaceHolderIndicadores.Controls.Add(new LiteralControl("<tr>"));
            PlaceHolderIndicadores.Controls.Add(new LiteralControl("<td>"));
            PlaceHolderIndicadores.Controls.Add(new LiteralControl("<td/>"));
            PlaceHolderIndicadores.Controls.Add(new LiteralControl("<tr/>"));
            int i = 0;
            foreach (var v in datos)
            {
                PlaceHolderIndicadores.Controls.Add(new LiteralControl("<tr>"));
                Label myLabel = new Label();
                TextBox myTexBox = new TextBox();
                myLabel.Text = v.IND_NOMBRE;
                myLabel.ID = "Label" + i.ToString();
                myTexBox.ID = "txtIndicador" + i.ToString();

                RequiredFieldValidator objReqValidator = new RequiredFieldValidator();
                objReqValidator.ID = "reqValidator" + i.ToString();
                objReqValidator.ControlToValidate = myTexBox.ID;
                objReqValidator.ErrorMessage = "<b>PARTE B: </b> El campo " + myLabel.Text + " es obligatorio";
                objReqValidator.Text = "*";
                objReqValidator.ValidationGroup = "grupParteA";

                if (v.IND_TIPO == 1)
                {
                    myTexBox.TextMode = TextBoxMode.MultiLine;
                    myTexBox.Width = 650;
                    myTexBox.Height = 1000;
                }

                PlaceHolderIndicadores.Controls.Add(new LiteralControl("<td class=style77  width=30%>"));
                PlaceHolderIndicadores.Controls.Add(myLabel);
                PlaceHolderIndicadores.Controls.Add(new LiteralControl("<td/>"));
                PlaceHolderIndicadores.Controls.Add(new LiteralControl("<td  width=70%>"));
                PlaceHolderIndicadores.Controls.Add(myTexBox);
                PlaceHolderIndicadores.Controls.Add(objReqValidator);
                PlaceHolderIndicadores.Controls.Add(new LiteralControl("<td/>"));
                PlaceHolderIndicadores.Controls.Add(new LiteralControl("<tr/>"));
                i++;
            }

            PlaceHolderIndicadores.Controls.Add(new LiteralControl("<table/>"));

        }
        catch (Exception ex)
        {
            ex.Message.ToString();
            throw;
        }
    }
    #endregion

    #region ddlAppLineas_SelectedIndexChanged
    protected void ddlAppLineas_SelectedIndexChanged(object sender, EventArgs e)
    {
        cargarControlesLineas(ddlAppLineas.SelectedValue);
    }
    #endregion

    /////////////////////////////////////
    //                                 //
    //          NAVEGACION             //
    //                                 //
    /////////////////////////////////////

    #region btnRegresar_Click
    protected void btnRegresar_Click(object sender, EventArgs e)
    {
        Server.Transfer("VerificarNit.aspx", true);
    }
    #endregion

    /////////////////////////////////////
    //                                 //
    //          APP_DOCUMENTOS         //
    //                                 //
    /////////////////////////////////////

    #region cargarControlesDocumentos
    private void cargarControlesDocumentos()
    {
        try
        {
            if (ddlTIP_NOMBRE.SelectedValue != "")
            {
                PlaceHolderDocumentos.Controls.Clear();
                //Consulta a la base de datos
                DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
                var datos = (
                             from a in contexto.APP_DOCUMENTOS_TIPO_ENTIDADEs
                             join b in contexto.APP_TIPO_DOCUMENTOs on a.TDO_ID equals b.TDO_ID
                             join c in contexto.APP_TIPOS_ENTIDADEs on a.TIP_ID equals c.TIP_ID
                             where object.Equals(a.TIP_ID, ddlTIP_NOMBRE.SelectedValue)
                             //select a
                             select new
                             {
                                 b.TDO_NOMBRE,
                                 a.TDO_NS
                             }
                            );

                PlaceHolderDocumentos.Controls.Add(new LiteralControl("<table>"));
                PlaceHolderDocumentos.Controls.Add(new LiteralControl("<tr>"));
                PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td>"));
                PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td/>"));
                PlaceHolderDocumentos.Controls.Add(new LiteralControl("<tr/>"));
                int i = 0;
                foreach (var v in datos)
                {
                    PlaceHolderDocumentos.Controls.Add(new LiteralControl("<tr>"));
                    HyperLink myHyperLink = new HyperLink();
                    myHyperLink.ID = "lnkDocumento" + i.ToString();
                    Label myLabel = new Label();
                    FileUpload myFileUpload = new FileUpload();
                    myLabel.Text = v.TDO_NOMBRE;
                    myLabel.ID = "lblDocumentos" + i.ToString();
                    myFileUpload.ID = "fuDocumentos" + i.ToString();
                    PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td class=style77>"));
                    PlaceHolderDocumentos.Controls.Add(myLabel);
                    PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td/>"));
                    PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td>"));
                    PlaceHolderDocumentos.Controls.Add(myFileUpload);
                    PlaceHolderDocumentos.Controls.Add(myHyperLink);
                    PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td/>"));

                    PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td>"));
                    Label myLabelTipoDoc = new Label();
                    myLabelTipoDoc.Text = v.TDO_NS;
                    myLabelTipoDoc.ID = "lblDocumentosTipoDoc" + i.ToString();
                    PlaceHolderDocumentos.Controls.Add(myLabelTipoDoc);
                    PlaceHolderDocumentos.Controls.Add(new LiteralControl("<td/>"));
                    PlaceHolderDocumentos.Controls.Add(new LiteralControl("<tr/>"));
                    i++;
                }

                PlaceHolderDocumentos.Controls.Add(new LiteralControl("<table/>"));
            }

        }
        catch (Exception ex)
        {
            ex.Message.ToString();
            throw;
        }
    }
    #endregion



    protected void ddlTIP_NOMBRE_SelectedIndexChanged(object sender, EventArgs e)
    {
        cargarControlesDocumentos();
    }

    /////////////////////////////////////
    //                                 //
    //          IMPRESION              //
    //                                 //
    /////////////////////////////////////

    protected void btnImprimirParteA_Click(object sender, EventArgs e)
    {
        Session["StrProIdReporte"] =  StrProId;
        System.Text.StringBuilder l_msg = new System.Text.StringBuilder();
        //TODO: Revisar esta impresión.
        l_msg.Append(@"<script language=javascript>");
        l_msg.Append(@"window.open('ReporteParteA.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, width=800, height=600, resizable=no, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
        Response.Write(l_msg.ToString());
    }
    protected void btnPaso4_Click(object sender, EventArgs e)
    {
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        try
        {



            //////////////////////////////////////////
            //   APP_PROYECTOS                      //
            //////////////////////////////////////////

            #region Actualiza datos del proyecto
            var datosProyectos = (from a in contexto.APP_PROYECTOs
                                  where a.PRO_ID == Convert.ToDecimal(StrProId)
                                  select a);
            foreach (var v in datosProyectos)
            {
                v.PRO_ESTADO = 'M';
            }
            contexto.SubmitChanges();

            //envia correo


            string strAdministradores = ConfigurationManager.AppSettings["CorreosAdministradores"].ToString();

            string[] strArregloAdministradores = strAdministradores.Split(',');


            foreach (string var in strArregloAdministradores)
            {
                // es administrador mostrar todos

                EnviarCorreo(var, "", "PROYECTOS NACIONALES E INTERMEDIOS </br> Envio Proyecto Concertaciòn", "Se acaba de enviar a revisiòn el siguiente proyecto: <b>" + txtPRO_NOMBRE.Text + "</b>, el cual pertenece al siguiente correo electrónico : " + txtPRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL.Text + "</br> Att </br> Sistema Registro de Proyectos Concertación", ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]);
               
            }


            btnGrabarPaso1.Visible = false;
            btnGuardarPaso2.Visible = false;
            btnGuardarPaso3.Visible = false;
            btnSiguientePaso1.Visible = false;
            btnSiguientePaso2.Visible = false;
            btnSiguientePaso3.Visible = false;
            btnPaso4.Visible = false;

            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_parteB_err", "alert('Su proyecto fue enviado exitosamente al Ministerio de Cultura, gracias');", true);
            #endregion
        }
        catch (Exception ex)
        {

            throw new Exception(ex.Message.ToString(), ex);
            //ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }
    }


        public static bool EnviarCorreo(string strTo, string strCC, string strSubject, string strMessage,  string strServidor, string strMailAutentication, string strMailpassword)
        {
           
            try
            {
               
                bool Salida = true;
                
                    System.Net.Mail.MailMessage correo = new System.Net.Mail.MailMessage();
                    correo.From = new System.Net.Mail.MailAddress(strMailAutentication);
                    correo.To.Add(strTo);
                    correo.Bcc.Add("hgracia@mincultura.gov.co");
                    //correo.Bcc.Add("sig@mincultura.gov.co");
                    correo.Subject = strSubject;
                    correo.Body = strMessage;
                    correo.IsBodyHtml = true;
                    correo.Priority = System.Net.Mail.MailPriority.Normal;
                    System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
                    smtp.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
                    smtp.Host = strServidor;//"192.168.160.129";//"MCQUIMBAYA.mincultura.dag";//"MCQUIMBAYA.mincultura.dag";
                    smtp.UseDefaultCredentials = true;
                    smtp.Credentials = new System.Net.NetworkCredential(strMailAutentication, strMailpassword);
                    smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;

                    string strSalida = "";
                    try
                    {
                        smtp.Send(correo);
                    }
                    catch (Exception ex)
                    {
                        strSalida = ex.Message;
                    }
                return Salida;
            }
            catch (Exception ex)
            {
                string ex1 = ex.Message;
                ex1 = ex1.ToString();
                return false;
            }
        }

        protected void btnImprimirParteB_Click(object sender, EventArgs e)
        {
            crearContextItems();
            System.Text.StringBuilder l_msg = new System.Text.StringBuilder();
            //TODO: Revisar esta impresión.
            l_msg.Append(@"<script language=javascript>");
            l_msg.Append(@"window.open('ReporteParteB.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, width=800, height=600, resizable=no, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
            Response.Write(l_msg.ToString());
        }
        protected void acionForma_Click(object sender, EventArgs e)
        {
            try
            {
                //////////////////////////////////////////
                //    GENERA EL NUMERO DE RADICACION    //
                //////////////////////////////////////////
                DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
                string strProNumeroRadicacion = "";
                if (lblNumeroRadicacion.Text == "")
                {
                    var query = contexto.PAS_ACTUALIZAR_NUMERO_RADICACION(Convert.ToDecimal(StrProId), 37, ref strProNumeroRadicacion);
                    lblNumeroRadicacion.Text = strProNumeroRadicacion;
                    //Cambia el estado a E


                    //////////////////////////////////////////
                    //   APP_PROYECTOS                      //
                    //////////////////////////////////////////

                    var datosProyectos = (from a in contexto.APP_PROYECTOs
                                          where a.PRO_ID == Convert.ToDecimal(StrProId)
                                          select a);
                    foreach (var v in datosProyectos)
                    {
                        v.PRO_ESTADO = 'E';
                    }
                    contexto.SubmitChanges();
                }
            }
            catch (Exception ex)
            {

                throw new Exception(ex.Message.ToString(), ex);
                //ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
            }
        }
}

 


public static class ControlExtensions
{
    public static Control FindControlRecursive(this Control control, string id)
    {
        if (control == null) return null;
        //try to find the control at the current level             
        Control ctrl = control.FindControl(id);
        if (ctrl == null)
        {
            //search the children                 
            foreach (Control child in control.Controls)
            {
                ctrl = FindControlRecursive(child, id);
                if (ctrl != null)
                    break;
            }
        }
        return ctrl;
    }
}